以前写过一篇文章:Mysql主从同步的原理。
相信看过这篇文章的童鞋,都摩拳擦掌,跃跃一试了吧?
今天咱们就来一次mysql主从同步实战!javascript
os:ubuntu16.04
mysql:5.7.17复制代码
下面的实战演练,都是基于上面的环境。固然,其余环境也大同小异。html
2台机器:java
master IP:192.168.33.22
slave IP:192.168.33.33复制代码
咱们找到文件 /etc/mysql/mysql.conf.d/mysqld.cnf
。
配置以下:mysql
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复制代码
sudo systemctl restart mysql复制代码
$ 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加入读锁,使其变为只读。sql
mysql> FLUSH TABLES WITH READ LOCK;
Query OK, 0 rows affected (0.00 sec)复制代码
该信息稍后会用到。ubuntu
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)复制代码
$ mysqldump -u root -p --all-databases --master-data > dbdump.sql复制代码
mysql> UNLOCK TABLES;复制代码
scp dbdump.sql ubuntu@192.168.33.33:/home/ubuntu复制代码
咱们找到文件 /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复制代码
sudo systemctl restart mysql复制代码
$ mysql -u root -p < /home/ubuntu/dbdump.sql复制代码
$ 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
获得的。工具
通过如此设置以后,就能够进行master-slave同步了~spa
HOW TO SETUP MYSQL 5.7 REPLICATION WITH MONITORING ON UBUNTU 16.04rest
更多精彩,请关注公众号“聊聊代码”,让咱们一块儿聊聊“左手代码右手诗”的事儿。