当前位置:Gxlcms > 数据库问题 > MySQL5.6主从复制(读写分离)教程(一)

MySQL5.6主从复制(读写分离)教程(一)

时间:2021-07-01 10:21:17 帮助过:17人阅读

‘@‘192.168.1.101‘ IDENTIFIED BY ‘111111‘;

Query OK, 0 rows affected (0.00 sec)


注意:以上命令中的IP地址,是从数据库服务器的IP地址。


第5步:主数据库锁表(禁止再插入数据以获取主数据库的的二进制日志坐标)


mysql> flush tables with read lock;


Query OK, 0 rows affected (0.00 sec)


第6步:查看主数据库的状态(并记录下File字段和Position字段的值,在配置从服务器时有用到)


mysql> show master status;


+------------------------+----------+--------------+------------------+-------------------+


| File                  | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |


+------------------------+----------+--------------+------------------+-------------------+


| mysqlmaster-bin.000004 |      327 |              |                  |                  |


+------------------------+----------+--------------+------------------+-------------------+


1 row in set (0.00 sec)


第7步:创建主数据库的快照文件


[root@master ~]# cd /usr/bin/


# ./mysqldump -uroot -p -h127.0.0.1 -P3306 --all-databases --triggers --routines --events >>/mnt/windows/all.sql


上面命令中的红色部分,是一个共享目录,这个目录可以同时被主数据库服务器和从数据库服务器访问到。


如果没有这样的共享目录,可以将all.sql放在其它任何目录下,然后使用scp命令复制到远程从数据库服务器的某个目录中


这条命令的执行时间根据数据量的不同,会有所不同,如果主数据库的数据量很大,可能需要很长时间,那么在这种情况下,就最好在晚上没有业务的时候进行这个操作,否则第七步中的锁表操作会对业务系统造成很大的影响


第8步:解锁主数据库的锁表操作


[root@master ~]# mysql -uroot -p    (本命令在主数据库服务器上执行)


mysql> unlock tables;


Query OK, 0 rows affected (0.00 sec)


第9步:在从数据库服务器上导入快照文件到从数据库中


[root@slave ~]# mysql -uroot -p -h127.0.0.1 -P3306 < /mnt/all.sql


第10步:在从数据库服务器上设置主数据库服务器向从数据库服务器同步


[root@slave ~]# mysql -uroot -p


mysql> change master to master_host = ‘192.168.1.100‘,master_user=‘repl‘,master_password=‘111111‘,master_log_file=‘mysqlmaster-bin.000004‘,master_log_pos=327;


注意:红色部分的值,是在第6步中查出来的,这里不能弄错了


第11步:启动从数据库复制线程


mysql> start slave;


Query OK, 0 rows affected (0.01 sec)


第12步:查询从数据库的复制线程状态


mysql> show slave status \G

*************************** 1. row ***************************

               Slave_IO_State: Waiting for master to send event

                  Master_Host: 192.168.10.22

                  Master_User: repl

                  Master_Port: 3306

                Connect_Retry: 60

              Master_Log_File: mysqlmaster-bin.000001

          Read_Master_Log_Pos: 920

               Relay_Log_File: lingyou2-relay-bin.000002

                Relay_Log_Pos: 887

        Relay_Master_Log_File: mysqlmaster-bin.000001

             Slave_IO_Running: Yes

            Slave_SQL_Running: Yes

              Replicate_Do_DB: 

          Replicate_Ignore_DB: 

           Replicate_Do_Table: 

       Replicate_Ignore_Table: 

      Replicate_Wild_Do_Table: 

  Replicate_Wild_Ignore_Table: 

                   Last_Errno: 0

                   Last_Error: 

                 Skip_Counter: 0

          Exec_Master_Log_Pos: 920

              Relay_Log_Space: 1063

              Until_Condition: None

               Until_Log_File: 

                Until_Log_Pos: 0

           Master_SSL_Allowed: No

           Master_SSL_CA_File: 

           Master_SSL_CA_Path: 

              Master_SSL_Cert: 

            Master_SSL_Cipher: 

               Master_SSL_Key: 

        Seconds_Behind_Master: 0

Master_SSL_Verify_Server_Cert: No

                Last_IO_Errno: 0

                Last_IO_Error: 

               Last_SQL_Errno: 0

               Last_SQL_Error: 

  Replicate_Ignore_Server_Ids: 

             Master_Server_Id: 1

                  Master_UUID: b3825c9e-929c-11e5-898f-44a8422778a9

             Master_Info_File: /var/lib/mysql/master.info

                    SQL_Delay: 0

          SQL_Remaining_Delay: NULL

      Slave_SQL_Running_State: Slave has read all relay log; waiting for the slave I/O thread to update it

           Master_Retry_Count: 86400

如果Slave_IO_Running和Slave_SQL_Running两项都为yes,就表示主从复制配置成功了.


下面可以开始测试配置是否成功了,首先在主数据库的test数据库中新建一张表,然后插入几条数据,然后到从数据库看看是否同步过来了。


注意:当从数据库有大量的查询时,可以暂时将从数据库的复制线程关闭掉,等查询量降下来了,再打开,这样也不会丢失数据。


MySQL5.6主从复制(读写分离)教程(一)

标签:mysql 主从复制 读写分离

人气教程排行