MYSQL 主从数据库同步

来源:互联网 发布:如何屏蔽网络监控 编辑:程序博客网 时间:2024/04/30 23:45

        MYSQL可以实现将主服务器的数据自动同步到从服务器中,master,salve服务器

   

        1、搭建环境:

        主服务器::172.16.3.180
      从服务器::172.16.68.154
      操作系统:主服务器为Windows Server 2003,从服务器为Windows XP
      MYSQL 版本为5.5
      备份数据库:backup


        2、master服务器配置:

#启用二进制日志功能。log-bin=mysql-bin#服务器编号。server-id = 1#只把给定数据库里的变化情况记入二进制日志文件。(如果对多个数据库保存日志,那么可以用多行来表示。)binlog-do-db=backup#不把给定数据库里的变化情况记入二进制日志文件。(如果忽略多个数据库的日志保存,那么可以用多行来表示。)binlog-ignore-db=mysql#每经过n次日志写操作就把日志文件写入硬盘一次(对日志信息进行一次同步)。n=1是最安全的做法,但效率最低。#默认设置是n=0,意思是由操作系统来负责二进制日志文件的同步工作。sync_binlog=1

        3、salve服务器配置:

#服务器编号(不可以跟主服务器的编号相同。)server-id = 2log-bin=slave-bin#启用从属服务器上的日志功能,使这台计算机可以用来构成一个镜像链(A->B->C)log-slave-updates#从库是否只读,0表示可读写,1表示只读read-only=1#只复制某个表#replicate-do-table=tablename#只复制某些表(可用匹配符)#replicate-wild-do-table=tablename%#只复制某个库(如果对多个数据库做同步,那么可以用多行来表示。)replicate-do-db = backup#只复制某些库#replicte-wild-do-db=dbname%#不复制某个表#replicate-ignore-table=tablename#不复制某些表#replicate-wild-ignore-table=tablename%#不复制某个库(如果忽略多个数据库的同步,那么可以用多行表示。)replicate-ignore-db=mysql#复制完的sql语句是否立即从中继日志中清除,1表示立即清除relay-log-purge = 1#从服务器主机,用于show slave hosts生成从库清单report-host=slave-1#即不管发生什么错误,镜像处理工作也继续进行slave-skip-errors=all#每经过n次日志写操作就把日志文件写入硬盘一次(对日志信息进行一次同步)。n=1是最安全的做法,但效率最低。#默认设置是n=0,意思是由操作系统来负责二进制日志文件的同步工作。sync_binlog=1

        4、在master服务器上授权可以同步的salve服务器以及对应账号:

            GRANT REPLICATION SLAVE ON *.* TO root@172.16.68.154 IDENTIFIED BY 'root';

            说明:root 账号  root 密码  172.16.68.154 是salve服务器地址

      5、锁定master服务器上的数据库并备份master上的同步数据库

            mysql> flush tables with read lock;

            同步方式有很多,可以直接拷贝的方式,也可以通过命令行的方式,注意,如果用拷贝的方式需要关闭mysql服务

        6、slave服务器的配置

              首先查看master服务器上的文件以及位置:

          mysql> show master status;
          +------------------+----------+--------------------+-----------------------+
          | File             | Position | Binlog_Do_DB | Binlog_Ignore_DB |
          +------------------+----------+--------------------+-----------------------+
          | mysql-bin.000001 |   98 | backup          | mysql              |
          +------------------+----------+--------------------+-----------------------+

         在slave上配置:

         mysql> CHANGE MASTER TO
         -> MASTER_HOST='172.16.3.180',
         -> MASTER_USER='root',
         -> MASTER_PASSWORD='root',
        -> MASTER_LOG_FILE='mysql-bin.000001',
        -> MASTER_LOG_POS=98;
       Query OK, 0 rows affected (0.01 sec)
       mysql> start slave;
       Query OK, 0 rows affected (0.00 sec)

        将master服务器解锁

         mysql> unlock tables;
         Query OK, 0 rows affected (0.00 sec)

        7、检查同步结果

              mysql>show slave status /G;
          如果下面三项显示为这样,则表示已经启动正常。
          Slave_IO_State: Waiting for master to send event
          Slave_IO_Running: Yes
          Slave_SQL_Running: Yes

原创粉丝点击