mysql 雙機複製

1、設置binlog_format,開啓log_bin

mysql> system cat /etc/my.cnf | grep binlog
binlog_format=mixed
mysql> show variables like '%binlog_format%';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| binlog_format | MIXED |
+---------------+-------+
1 row in set (0.00 sec)

mysql> show variables like 'log_bin';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| log_bin       | ON    |
+---------------+-------+
1 row in set (0.01 sec)

2、兩臺機子serverid,uuid不能一樣

mysql> show variables like '%server_id';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| server_id     | 23306 |
+---------------+-------+
1 row in set (0.00 sec)

mysql> show variables like '%uuid';
+---------------+--------------------------------------+
| Variable_name | Value                                |
+---------------+--------------------------------------+
| server_uuid   | 64f4a34e-9258-11e4-827c-08002796172a |
+---------------+--------------------------------------+
1 row in set (0.00 sec)

mysql> show variables like '%server_id';
+---------------+--------+
| Variable_name | Value  |
+---------------+--------+
| server_id     | 343306 |
+---------------+--------+
1 row in set (0.00 sec)

mysql> show variables like '%uuid';
+---------------+--------------------------------------+
| Variable_name | Value                                |
+---------------+--------------------------------------+
| server_uuid   | b1f572a1-8e9a-11e4-aa17-080027eb4037 |
+---------------+--------------------------------------+
1 row in set (0.00 sec)

2、備份主庫數據

 mysqldump -uroot -p3306 --master-data=2 --single-transaction -A > master.sql
備份後的文件會記錄主庫log的pos



根據此信息修改後在從庫導入


[root@mysql34 user_3306]# mysql -uroot -p3306 < /tmp/master.sql 
Warning: Using a password on the command line interface can be insecure.

3、上面所示的用戶repl爲複製用的用戶,需要在主庫中增加這個用戶

mysql> grant replication slave on *.* to 'repl'@'192.168.56.%' identified by 'repl';
Query OK, 0 rows affected (0.00 sec)

mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)

4、可以查看複製情況了。

主庫:

mysql> create table test as select * from emp;
Query OK, 14 rows affected (0.08 sec)
Records: 14  Duplicates: 0  Warnings: 0

mysql> select ename from test where deptno=10;
+--------+
| ename  |
+--------+
| CLARK  |
| KING   |
| MILLER |
+--------+
3 rows in set (0.04 sec)

從庫:

mysql> select ename from test where deptno=10;
+--------+
| ename  |
+--------+
| CLARK  |
| KING   |
| MILLER |
+--------+
3 rows in set (0.03 sec)

主庫刪除數據:

mysql> delete from test where ename = 'KING';
Query OK, 1 row affected (0.04 sec)

mysql> select ename from test where deptno=10;
+--------+
| ename  |
+--------+
| CLARK  |
| MILLER |
+--------+
2 rows in set (0.00 sec)

查看從庫信息:

mysql> select ename from test where deptno=10;
+--------+
| ename  |
+--------+
| CLARK  |
| MILLER |
+--------+
2 rows in set (0.00 sec)

5、雙主,根據此時從庫的狀態改寫語句

mysql> flush logs;
Query OK, 0 rows affected (0.10 sec)

mysql> show master status \G;
*************************** 1. row ***************************
             File: mysql-bin.000015
         Position: 120
     Binlog_Do_DB: 
 Binlog_Ignore_DB: 
Executed_Gtid_Set: 
1 row in set (0.00 sec)

ERROR: 
No query specified



在主庫(03)執行

mysql> CHANGE MASTER TO
    -> MASTER_LOG_FILE='mysql-bin.000015',
    -> MASTER_LOG_POS=120,
    -> MASTER_HOST='192.168.56.34',
    -> MASTER_PORT=3306,
    -> MASTER_USER='repl',
    -> MASTER_PASSWORD='repl';
Query OK, 0 rows affected, 2 warnings (0.08 sec)

8、雙主驗正

原從庫(34)刪除數據

mysql> delete from test where ename = 'MILLER';
Query OK, 1 row affected (0.04 sec)

主庫(03)

mysql> select ename from test where deptno=10;
+-------+
| ename |
+-------+
| CLARK |
+-------+
1 row in set (0.00 sec)

主庫(03)刪除

mysql> delete from test where ename = 'CLARK';
Query OK, 1 row affected (0.06 sec)

(34)驗正

mysql> select ename from test where deptno=10;
Empty set (0.00 sec)

同步正常

有人對主從log的對應關係搞不清楚,下面用圖形表示下





發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章