Linux mysql 5.7.23 主从复制(异步复制)

docker容器主节点: 172.17.0.9 
docker容器子节点: 172.17.0.10 异步复制: 首先确认主库和从库是否一致,最好都是刚刚初始化的干净的数据库 如果主库正在使用不能初始化,就要先将主库的内容复制到从库上再做同步 1、先把master做一个备份,把备份出的文件传给slave [root@99f856c64c02 /]# mysqldump -uroot -p -B test > test.dump Enter password:  [root@72bd50b77c93 data]# mysql -uroot -p Enter password:  Welcome to the MySQL monitor.  Commands end with ; or \g. Your MySQL connection id is 4 Server version: 5.7.23 MySQL Community Server (GPL) Copyright (c) 2000, 2018, Oracle and/or its affiliates. All rights reserved. Oracle is a registered trademark of Oracle Corporation and/or its affiliates. Other names may be trademarks of their respective owners. Type ‘help;‘ or ‘\h‘ for help. Type ‘\c‘ to clear the current input statement. mysql> source /data/test.dump Query OK, 0 rows affected (0.00 sec) Query OK, 0 rows affected (0.00 sec) Query OK, 0 rows affected (0.00 sec) Query OK, 0 rows affected (0.00 sec) Query OK, 0 rows affected (0.00 sec) Query OK, 0 rows affected (0.00 sec) Query OK, 0 rows affected (0.00 sec) Query OK, 0 rows affected (0.00 sec) Query OK, 0 rows affected, 1 warning (0.00 sec) Query OK, 0 rows affected (0.00 sec) Query OK, 1 row affected (0.00 sec) Database changed Query OK, 0 rows affected (0.00 sec) Query OK, 0 rows affected (0.00 sec) Query OK, 0 rows affected (0.00 sec) Query OK, 0 rows affected (0.00 sec) Query OK, 0 rows affected (0.00 sec) Query OK, 0 rows affected (0.01 sec) Query OK, 0 rows affected (0.00 sec) Query OK, 1 row affected (0.00 sec) Query OK, 0 rows affected (0.00 sec) Query OK, 0 rows affected (0.00 sec) Query OK, 0 rows affected (0.00 sec) Query OK, 0 rows affected, 1 warning (0.00 sec) Query OK, 0 rows affected (0.00 sec) Query OK, 0 rows affected (0.00 sec) Query OK, 0 rows affected (0.00 sec) Query OK, 0 rows affected (0.00 sec) Query OK, 0 rows affected (0.00 sec) Query OK, 0 rows affected (0.00 sec) mysql> show databases; +——————–+ | Database           | +——————–+ | information_schema | | mysql              | | performance_schema | | sys                | | test               | +——————–+ 5 rows in set (0.00 sec) 再到slave上将数据恢复 mysql> source /mysql/test3.sql mysql> show databases; +——————–+ | Database           | +——————–+ | information_schema | | mysql              | | performance_schema | | test1              | | test2              | | test3              | +——————–+ 6 rows in set (0.00 sec) 2.开启主节点Bin-log日志

vi /etc/my.cnf

添加bin-log配置 

server-id=1 log-bin=mysql-bin binlog_format=row

 systemctl restart mysqld 

 

3.创建复制用户,赋予用户权限 mysql> grant replication slave on *.* to ‘repl‘@‘%‘ identified by ‘mysql‘; mysql> flush privileges; mysql> show master status;       
要记住position +——————+———-+————–+————————–+——————-+ | File             | Position | Binlog_Do_DB | Binlog_Ignore_DB         | Executed_Gtid_Set | +——————+———-+————–+————————–+——————-+ | mysql-bin.000003 |     683 |              | mysql,information_schema |                   | +——————+———-+————–+————————–+——————-+ 1 row in set (0.00 sec) 4.再到slave mysql>  change master to master_host=‘172.17.0.9‘,master_port=3306,master_user=‘repl‘,     ->  master_password=‘mysql‘’,master_log_file=‘mysql-bin.000003‘,master_log_pos=683; Query OK, 0 rows affected, 2 warnings (0.01 sec) mysql>  start slave; Query OK, 0 rows affected (0.09 sec) mysql> show slave status\G; *************************** 1. row ***************************                Slave_IO_State: Waiting for master to send event                   Master_Host: 172.17.0.9                   Master_User: repl                   Master_Port: 3306                 Connect_Retry: 60               Master_Log_File: mysql-bin.000003           Read_Master_Log_Pos: 154                Relay_Log_File: 72bd50b77c93-relay-bin.000002                 Relay_Log_Pos: 320         Relay_Master_Log_File: mysql-bin.000003              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: 154               Relay_Log_Space: 534               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: 8ce1a2b2-b01c-11e8-90a0-0242ac11000a              Master_Info_File: /usr/local/mysql/data/master.info                     SQL_Delay: 0           SQL_Remaining_Delay: NULL       Slave_SQL_Running_State: Slave has read all relay log; waiting for more updates            Master_Retry_Count: 86400                   Master_Bind:        Last_IO_Error_Timestamp:       Last_SQL_Error_Timestamp:                 Master_SSL_Crl:             Master_SSL_Crlpath:             Retrieved_Gtid_Set:              Executed_Gtid_Set:                  Auto_Position: 0          Replicate_Rewrite_DB:                   Channel_Name:             Master_TLS_Version:  1 row in set (0.00 sec) 看到两个yes 就基本成功了 可以在主库上进行一些操作来测试一下

 

5.测试结果:

 主库插入数据

[root@99f856c64c02 mysql]# mysql -uroot Enter password:  Welcome to the MySQL monitor.  Commands end with ; or \g. Your MySQL connection id is 5 Server version: 5.7.23-log MySQL Community Server (GPL) Copyright (c) 2000, 2018, Oracle and/or its affiliates. All rights reserved. Oracle is a registered trademark of Oracle Corporation and/or its affiliates. Other names may be trademarks of their respective owners. Type ‘help;‘ or ‘\h‘ for help. Type ‘\c‘ to clear the current input statement. mysql> use test; Reading table information for completion of table and column names You can turn off this feature to get a quicker startup with -A Database changed mysql> select * from t; +——+——+——+ | id   | name | age  | +——+——+——+ |    1 | dd   |   10 | +——+——+——+ 1 row in set (0.00 sec) mysql> insert into t values(2,‘2222‘,11); Query OK, 1 row affected (0.00 sec) mysql> 

 

 

登录slave数据库

mysql> use test; Reading table information for completion of table and column names You can turn off this feature to get a quicker startup with -A Database changed mysql> select * from t; +——+——+——+ | id   | name | age  | +——+——+——+ |    1 | dd   |   10 | |    2 | 2222 |   11 | +——+——+——+ 2 rows in set (0.00 sec) mysql>  mysql>  mysql>