以前写过一篇文章: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
咱们找到文件 /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
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加入读锁,使其变为只读。segmentfault
mysql> FLUSH TABLES WITH READ LOCK; Query OK, 0 rows affected (0.00 sec)
该信息稍后会用到。架构
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
获得的。spa
通过如此设置以后,就能够进行master-slave同步了~rest
HOW TO SETUP MYSQL 5.7 REPLICATION WITH MONITORING ON UBUNTU 16.04code
更多精彩,请关注公众号“聊聊代码”,让咱们一块儿聊聊“左手代码右手诗”的事儿。