詳細(xì)說(shuō)明Mysql主從同步設(shè)置示例代碼
發(fā)表時(shí)間:2023-09-11 來(lái)源:明輝站整理相關(guān)軟件相關(guān)文章人氣:
[摘要]這篇文章主要介紹了詳解Mysql主從同步實(shí)戰(zhàn),實(shí)例分析了Mysql主從同步的原理和實(shí)現(xiàn),非常具有實(shí)用價(jià)值,需要的朋友可以參考下。1、Introduction之前寫(xiě)過(guò)一篇文章:Mysql主從同步的原理。相信看過(guò)這篇文章的童鞋,都摩拳擦掌,躍躍一試了吧?今天我們就來(lái)一次mysql主從同步實(shí)戰(zhàn)!2、環(huán)境...
這篇文章主要介紹了詳解
Mysql主從同步實(shí)戰(zhàn),實(shí)例分析了Mysql主從同步的原理和實(shí)現(xiàn),非常具有實(shí)用價(jià)值,需要的朋友可以參考下。
1、Introduction
之前寫(xiě)過(guò)一篇文章:Mysql主從同步的原理。
相信看過(guò)這篇文章的童鞋,都摩拳擦掌,躍躍一試了吧?
今天我們就來(lái)一次mysql主從同步實(shí)戰(zhàn)!
2、環(huán)境說(shuō)明
os:ubuntu16.04
mysql:5.7.17
下面的實(shí)戰(zhàn)演練,都是基于上面的環(huán)境。當(dāng)然,其他環(huán)境也大同小異。
3、進(jìn)入實(shí)戰(zhàn)
工具
2臺(tái)機(jī)器:
master IP:192.168.33.22
slave IP:192.168.33.33
master機(jī)器上的操作
1、更改配置文件
我們找到文件 /etc/mysql/mysql.conf.d/mysqld.cnf
。
配置如下:
bind-address = 192.168.33.22 #your master ip
server-id = 1 #在master-slave架構(gòu)中,每臺(tái)機(jī)器節(jié)點(diǎn)都需要有唯一的server-id
log_bin = /var/log/mysql/mysql-bin.log #開(kāi)啟binlog
2、重啟mysql,以使配置文件生效。
sudo systemctl restart mysql
3、創(chuàng)建主從同步的mysql user。
$ mysql -u root -p
Password:
##創(chuàng)建slave1用戶,并指定該用戶只能在主機(jī)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權(quán)限。
mysql> GRANT REPLICATION SLAVE ON *.* TO 'slave1'@'192.168.33.33';
Query OK, 0 rows affected (0.00 sec)
4、為MYSQL加讀鎖
為了主庫(kù)與從庫(kù)的數(shù)據(jù)保持一致,我們先為mysql加入讀鎖,使其變?yōu)橹蛔x。
mysql> FLUSH TABLES WITH READ LOCK;
Query OK, 0 rows affected (0.00 sec)
5、記錄下來(lái)MASTER REPLICATION LOG 的位置
該信息稍后會(huì)用到。
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)
6、將master DB中現(xiàn)有的數(shù)據(jù)信息導(dǎo)出
$ mysqldump -u root -p --all-databases --master-data > dbdump.sql
7、接觸master DB的讀鎖
mysql> UNLOCK TABLES;
8、將步驟6中的dbdump.sql文件copy到slave
scp dbdump.sql ubuntu@192.168.33.33:/home/ubuntu
slave機(jī)器上的操作
1、更改配置文件
我們找到文件 /etc/mysql/mysql.conf.d/mysqld.cnf
。
更改配置如下:
bind-address = 192.168.33.33 #your slave ip
server-id = 2 #master-slave結(jié)構(gòu)中,唯一的server-id
log_bin = /var/log/mysql/mysql-bin.log #開(kāi)啟binlog
2、重啟mysql,以使配置文件生效
sudo systemctl restart mysql
3、導(dǎo)入從master DB。 導(dǎo)出的dbdump.sql文件,以使master-slave數(shù)據(jù)一致
$ mysql -u root -p < /home/ubuntu/dbdump.sql
4、使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 得到的。
經(jīng)過(guò)如此設(shè)置之后,就可以進(jìn)行master-slave同步了~
以上就是詳解Mysql主從同步配置示例代碼的詳細(xì)內(nèi)容,更多請(qǐng)關(guān)注php中文網(wǎng)其它相關(guān)文章!
學(xué)習(xí)教程快速掌握從入門(mén)到精通的SQL知識(shí)。