Mysql主从同步实战

一、Introduction

以前写过一篇文章:Mysql主从同步的原理
相信看过这篇文章的童鞋,都摩拳擦掌,跃跃一试了吧?
今天咱们就来一次mysql主从同步实战!html

二、环境说明

os:ubuntu16.04
mysql:5.7.17

下面的实战演练,都是基于上面的环境。固然,其余环境也大同小异。mysql

三、进入实战

工具

2台机器:sql

master IP:192.168.33.22
slave  IP:192.168.33.33

master机器上的操做

一、更改配置文件

咱们找到文件 /etc/mysql/mysql.conf.d/mysqld.cnf
配置以下:ubuntu

bind-address = 192.168.33.22 #your master ip
server-id = 1 #在master-slave架构中,每台机器节点都须要有惟一的server-id
log_bin = /var/log/mysql/mysql-bin.log #开启binlog

二、重启mysql,以使配置文件生效。

sudo systemctl restart mysql

三、建立主从同步的mysql user。

$ mysql -u root -p
Password:

##建立slave1用户,并指定该用户只能在主机192.168.33.33上登陆。
mysql> CREATE USER 'slave1'@'192.168.33.33' IDENTIFIED BY 'slavepass';
Query OK, 0 rows affected (0.00 sec)

##为slave1赋予REPLICATION SLAVE权限。
mysql> GRANT REPLICATION SLAVE ON *.* TO 'slave1'@'192.168.33.33';
Query OK, 0 rows affected (0.00 sec)

四、为MYSQL加读锁

为了主库与从库的数据保持一致,咱们先为mysql加入读锁,使其变为只读。segmentfault

mysql> FLUSH TABLES WITH READ LOCK;
Query OK, 0 rows affected (0.00 sec)

五、记录下来MASTER REPLICATION LOG 的位置

该信息稍后会用到。架构

mysql> SHOW MASTER STATUS;
+------------------+----------+--------------+------------------+-------------------+
| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+------------------+----------+--------------+------------------+-------------------+
| mysql-bin.000001 |      613 |              |                  |                   |
+------------------+----------+--------------+------------------+-------------------+
1 row in set (0.00 sec)

六、将master DB中现有的数据信息导出

$ mysqldump -u root -p --all-databases --master-data > dbdump.sql

七、接触master DB的读锁

mysql> UNLOCK TABLES;

八、将步骤6中的dbdump.sql文件copy到slave

scp dbdump.sql ubuntu@192.168.33.33:/home/ubuntu

slave机器上的操做

一、更改配置文件

咱们找到文件 /etc/mysql/mysql.conf.d/mysqld.cnf
更改配置以下:工具

bind-address = 192.168.33.33 #your slave ip
server-id = 2 #master-slave结构中,惟一的server-id
log_bin = /var/log/mysql/mysql-bin.log #开启binlog

二、重启mysql,以使配置文件生效

sudo systemctl restart mysql

三、导入从master DB。 导出的dbdump.sql文件,以使master-slave数据一致

$ mysql -u root -p < /home/ubuntu/dbdump.sql

四、使slave与master创建链接,从而同步

$ mysql -u root -p
Password:

mysql> STOP SLAVE;
Query OK, 0 rows affected, 1 warning (0.00 sec)

mysql> CHANGE MASTER TO
    -> MASTER_HOST='192.168.33.22',
    -> MASTER_USER='slave1',
    -> MASTER_PASSWORD='slavepass',
    -> MASTER_LOG_FILE='mysql-bin.000001',
    -> MASTER_LOG_POS=613;
Query OK, 0 rows affected, 2 warnings (0.01 sec)

mysql> START SLAVE;
Query OK, 0 rows affected (0.00 sec)

MASTER_LOG_FILE='mysql-bin.000001'MASTER_LOG_POS=613的值,是从上面的 SHOW MASTER STATUS 获得的。spa

通过如此设置以后,就能够进行master-slave同步了~rest

四、参考文章

HOW TO SETUP MYSQL 5.7 REPLICATION WITH MONITORING ON UBUNTU 16.04code

更多精彩,请关注公众号“聊聊代码”,让咱们一块儿聊聊“左手代码右手诗”的事儿。
图片描述

相关文章
相关标签/搜索