姓名:刘浩然。 2020年大目标Python

MySQL 主主配置

一、准备

1、两个数据库版本最好保持一致(因为官方就是这么建议的,主要的问题就是考虑到兼容性问题)

2、连个数据库的数据保持一致,若不一致,可手动调整,比如A比B多一个库,那就将这个库导入到B库,达到一致

A数据库:182.92.172.80

B数据库:123.57.44.85

二、操作

  A数据库

1、开启binlog

[mysqld]
log-bin=mysql-bin #开启二进制日志
server-id=1 #设置server-id,不能一样

2、重启mysql,创建同于同步的用户账号

systemctl restart mysql

 登陆数据库

mysql -u root -p

 创建用户并授权:用户:test,密码:123456,ip:B主机的ip

create user 'test'@'123.57.44.85' identified by '123456';

 分配权限

grant replication slave on *.* to 'test'@'123.57.44.85';
flush privileges;

 锁表,禁止写入,当前窗口不能退出,这时候开启另一个终端继续操作

flush table with read lock;

 3、新窗口操作,查看master状态,记录二进制文件名和位置

show master status;
+------------------+----------+--------------+------------------+
| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+----------+--------------+------------------+
| mysql-bin.000003 |     1042 |              |                  |
+------------------+----------+--------------+------------------+

 4、将当前数据库导出,如果两个数据库不一致,手动调整

 mysqldump -u root -p --all-databases > alldb.sql

 5、解锁查看binlog日志位置,如果没变化证明锁定成功。从库将从这个binlog日志开始恢复

unlock tables;
 show master status;
+------------------+----------+--------------+------------------+
| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+----------+--------------+------------------+
| mysql-bin.000003 |     1042 |              |                  |
+------------------+----------+--------------+------------------+

   B数据库操作

1、导入数据

mysql -u root -p < alldb.sql 

 2、修改配置文件

[mysqld]
log-bin=mysql-bin #开启二进制日志
server-id=2 #设置server-id,必须唯一

 3、重启mysql,配置同步

systemctl restart mysql

 需要A服务器主机名,登陆凭证,二进制文件名称和位置

change master to master_host='182.92.172.80',
    -> master_user='test',
    -> master_password='123456',
    -> master_log_file='mysql-bin.000003',
    -> master_log_pos=1024;
#master_log_pos位置最好在 mysql-bin.000003里面找,用下面这个命令
#mysqlbinlog mysql-bin.000003 > test.txt

 4、开启slave,查看slave状态

start slave;
show slave status\G;

5、配置作为A的主

 创建用户并授权:用户:test,密码:123456,ip:A主机的ip

create user 'test'@'182.92.172.80' identified by '123456';

 分配权限

grant replication slave on *.* to 'test'@'182.92.172.80';
flush privileges;

 这次不用锁表了,因为B在同步A数据的时候,已经一致了。

6、新窗口操作,查看master状态,记录二进制文件名和位置

show master status;
+------------------+----------+--------------+------------------+
| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+----------+--------------+------------------+
| mysql-bin.000003 |     1042 |              |                  |
+------------------+----------+--------------+------------------+

   A数据库操作

1、需要B服务器主机名,登陆凭证,二进制文件名和位置

change master to master_host='123.57.44.85',
    -> master_user='test',
    -> master_password='123456',
    -> master_log_file='mysql-bin.000003',
    -> master_log_pos=1024;
#master_log_pos位置最好在 mysql-bin.000003里面找,用下面这个命令
#mysqlbinlog mysql-bin.000003 > test.txt

 2、开启查看slave状态

start slave;
show slave status\G;

 

posted @ 2019-03-04 17:20  pluto2charon  阅读(566)  评论(0编辑  收藏  举报