共計(jì) 3906 個(gè)字符,預(yù)計(jì)需要花費(fèi) 10 分鐘才能閱讀完成。
這篇文章主要介紹“MySQL5.6 怎么實(shí)現(xiàn)主主同步”,在日常操作中,相信很多人在 MySQL5.6 怎么實(shí)現(xiàn)主主同步問題上存在疑惑,丸趣 TV 小編查閱了各式資料,整理出簡單好用的操作方法,希望對(duì)大家解答”MySQL5.6 怎么實(shí)現(xiàn)主主同步”的疑惑有所幫助!接下來,請(qǐng)跟著丸趣 TV 小編一起來學(xué)習(xí)吧!
實(shí)戰(zhàn)環(huán)境介紹:
服務(wù)器名 IP 系統(tǒng) MySQL odd.example.com 192.168.1.115 rhel-5.8 5.6.24 even.example.com 192.168.1.116 rhel-5.8 5.6.24
假設(shè)要同步的庫是 db_rocky
㈠ 創(chuàng)建同步用戶
在 ODD 上
mysql grant replication slave on *.* to water @ 192.168.1.116 identified by cdio2010
Query OK, 0 rows affected (0.00 sec)
mysql flush privileges;
Query OK, 0 rows affected (0.00 sec)
在 EVEN 上
mysql grant replication slave on *.* to water @ 192.168.1.115 identified by cdio2010
Query OK, 0 rows affected (0.11 sec)
mysql flush privileges;
Query OK, 0 rows affected (0.00 sec)
㈡ 修改 /etc/my.cnf 配置文件, 為其添加以下內(nèi)容:
在 ODD 上
[mysqld]
server-id=1
binlog-do-db=db_rocky # 需要記錄進(jìn)制日志的數(shù)據(jù)庫.
binlog-ignore-db=mysql # 不需要記錄進(jìn)制日志的數(shù)據(jù)庫.
replicate-do-db=db_rocky # 需要進(jìn)行同步的數(shù)據(jù)庫.
replicate-ignore-db=mysql,information_schema # 不需要同步的數(shù)據(jù)庫.
注意:如果有多個(gè)數(shù)據(jù)庫可用逗號(hào)分隔, 或者使用多個(gè) binlog-do-db、binlog-do-db、replicate-do-db、replicate-ignore-db 選項(xiàng)
# 同步參數(shù):
# 保證 slave 掛在任何一臺(tái) master 上都會(huì)接收到另一個(gè) master 的寫入信息
log-slave-updates
sync_binlog=1
auto_increment_increment=2
auto_increment_offset=1
slave-skip-errors=all # 過濾掉一些沒啥大問題的錯(cuò)誤
在 EVEN 上
[mysqld]
server-id=2 #設(shè)置一個(gè)不同的 id 號(hào)
注意:在 my.cnf 里面有個(gè)默認(rèn)值 1,把默認(rèn)值改為其它的數(shù)字,而非新增一個(gè) server-id
binlog-do-db=db_rocky #需要記錄二進(jìn)制日志的數(shù)據(jù)庫.
binlog-ignore-db=mysql #不需要記錄進(jìn)制日志的數(shù)據(jù)庫.
# 需要同步的數(shù)據(jù)庫
replicate-do-db=db_rocky #需要進(jìn)行同步的數(shù)據(jù)庫.
replicate-ignore-db=mysql,information_schema # 不需要同步的數(shù)據(jù)庫.
# 如果有多個(gè)數(shù)據(jù)庫可用逗號(hào)分隔, 或者使用多個(gè) binlog-do-db、binlog-do-db、replicate-do-db、replicate-ignore-db 選項(xiàng)
# 同步參數(shù):
# 保證 slave 掛在任何一臺(tái) master 上都會(huì)接收到另一個(gè) master 的寫入信息
log-slave-updates
sync_binlog=1
auto_increment_increment=2
auto_increment_offset=2
slave-skip-errors=all # 過濾掉一些沒啥大問題的錯(cuò)誤
㈢ 分別重啟服務(wù)器 ODD、EVEN 上的 mysql 服務(wù)
# server mysqld restart
㈣ 分別在服務(wù)器 ODD、EVEN 上查看做為主服務(wù)器狀態(tài)
在 ODD
mysql flush tables with read lock; #防止進(jìn)入新的數(shù)據(jù)
Query OK, 0 rows affected (0.00 sec)
mysql show master status\G;
*************************** 1. row ***************************
File: mysql-bin.000007
Position: 438
Binlog_Do_DB: db_rocky
Binlog_Ignore_DB: mysql
1 row in set (0.00 sec)
在 EVEN
mysql flush tables with read lock;
Query OK, 0 rows affected (0.00 sec)
mysql show master status\G;
*************************** 1. row ***************************
File: mysql-bin.000008
Position: 107
Binlog_Do_DB: db_rocky
Binlog_Ignore_DB: mysql
1 row in set (0.01 sec)
㈤ 分別在服務(wù)器 ODD、EVEN 上用 change master 語句指定同步位置 :
在 ODD
mysql change master to master_host= 192.168.1.116 ,master_user= water ,master_password= cdio2010 ,
– master_log_file= mysql-bin.000008 ,master_log_pos=107;
Query OK, 0 rows affected (0.05 sec)
在 EVEN
mysql change master to master_host= 192.168.1.115 ,master_user= water ,master_password= cdio2010 ,
– master_log_file= mysql-bin.000007 ,master_log_pos=438;
Query OK, 0 rows affected (0.15 sec)
注:master_log_file,master_log_pos 由上面主服務(wù)器查出的狀態(tài)值中確定
master_log_file 對(duì)應(yīng) File,master_log_pos 對(duì)應(yīng) Position
在 ODD、EVEN 上執(zhí)行
mysql unlock tables;
Query OK, 0 rows affected (0.00 sec)
㈥ 分別在服務(wù)器 ODD、EVEN 上啟動(dòng)從服務(wù)器線程
mysql start slave;
Query OK, 0 rows affected (0.00 sec)
分別在服務(wù)器 ODD、EVEN 上查看從服務(wù)器狀態(tài) :
ODD 上
mysql show slave status\G;
*************************** 1. row ***************************
主要關(guān)注以下 2 個(gè)參數(shù):
…
…
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
…
…
EVEN 上:
mysql show slave status\G;
*************************** 1. row ***************************
主要關(guān)注以下 2 個(gè)參數(shù):
…
…
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
…
…
㈦ 測試
EVEN 上
mysql show databases;
+——————–+
| Database |
+——————–+
| information_schema |
| db_rocky |
| mysql |
| performance_schema |
| test |
+——————–+
5 rows in set (0.00 sec)
mysql use db_rocky;
Database changed
mysql show tables;
Empty set (0.00 sec)
mysql create table water (id int);
Query OK, 0 rows affected (0.04 sec)
mysql insert into water values(1);
Query OK, 1 row affected (0.01 sec)
mysql commit;
Query OK, 0 rows affected (0.00 sec)
在 ODD 上
mysql show tables;
+——————–+
| Tables_in_db_rocky |
+——————–+
| t_rocky |
| water |
+——————–+
2 rows in set (0.00 sec)
mysql select * from water;
+——+
| id |
+——+
| 1 |
+——+
1 row in set (0.00 sec)
到此,關(guān)于“MySQL5.6 怎么實(shí)現(xiàn)主主同步”的學(xué)習(xí)就結(jié)束了,希望能夠解決大家的疑惑。理論與實(shí)踐的搭配能更好的幫助大家學(xué)習(xí),快去試試吧!若想繼續(xù)學(xué)習(xí)更多相關(guān)知識(shí),請(qǐng)繼續(xù)關(guān)注丸趣 TV 網(wǎng)站,丸趣 TV 小編會(huì)繼續(xù)努力為大家?guī)砀鄬?shí)用的文章!