以前寫過一篇文章: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
更多精彩,請關注公衆號「聊聊代碼」,讓咱們一塊兒聊聊「左手代碼右手詩」的事兒。