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的对应关系搞不清楚,下面用图形表示下





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