zl程序教程

您现在的位置是:首页 >  数据库

当前栏目

MySQL主主同步配置步骤

mysql同步配置 步骤 主主
2023-06-13 09:14:52 时间
MySQL主主同步配置
服务器名 IP 系统 MySQL odd.example.com 192.168.1.116 rhel-5.8 5.5.16 even.example.com 192.168.1.115 rhel-5.8 5.5.16
假设要同步的库是db_rocky
㈠创建同步用户
在ODD上
复制代码代码如下:

mysql>grantreplicationslaveon*.*to"water"@"192.168.1.115"identifiedby"cdio2010";
QueryOK,0rowsaffected(0.00sec)
mysql>flushprivileges;
QueryOK,0rowsaffected(0.00sec)

在EVEN上
复制代码代码如下:

mysql>grantreplicationslaveon*.*to"water"@"192.168.1.116"identifiedby"cdio2010";
QueryOK,0rowsaffected(0.11sec)
mysql>flushprivileges;
QueryOK,0rowsaffected(0.00sec)

㈡修改/etc/my.cnf配置文件,为其添加以下内容:
在ODD上
复制代码代码如下:
[mysqld]
binlog-do-db=db_rocky#需要记录进制日志的数据库.如果有多个数据库可用逗号分隔,或者使用多个binlog-do-db选项
binlog-ignore-db=mysql#不需要记录进制日志的数据库.如果有多个数据库可用逗号分隔,或者使用多个binlog-do-db选项
replicate-do-db=db_rocky#需要进行同步的数据库.如果有多个数据库可用逗号分隔,或者使用多个replicate-do-db选项
replicate-ignore-db=mysql,information_schema#不需要同步的数据库.如果有多个数据库可用逗号分隔,或者使用多个replicate-ignore-db选项
#同步参数:
#保证slave挂在任何一台master上都会接收到另一个master的写入信息
log-slave-updates
sync_binlog=1
auto_increment_offset=1
auto_increment_increment=2
slave-skip-errors=all#过滤掉一些没啥大问题的错误

在EVEN上
复制代码代码如下:
[mysqld]
server-id=2#设置一个不同的id、注意这里在my.cnf里面有个默认值是1、把默认值改掉、而不能新增一个server-id
binlog-do-db=db_rocky#需要记录二进制日志的数据库.如果有多个数据库可用逗号分隔,或者使用多个binlog-do-db选项
binlog-ignore-db=mysql#不需要记录进制日志的数据库.如果有多个数据库可用逗号分隔,或者使用多个binlog-ignore-db选项
#需要同步的数据库
replicate-do-db=db_rocky#需要进行同步的数据库.如果有多个数据库可用逗号分隔,或者使用多个binlog-do-db选项
replicate-ignore-db=mysql,information_schema#不需要同步的数据库.如果有多个数据库可用逗号分隔,或者使用多个binlog-do-db选项
#同步参数:
#保证slave挂在任何一台master上都会接收到另一个master的写入信息
log-slave-updates
sync_binlog=1
auto_increment_offset=2
auto_increment_increment=2
slave-skip-errors=all#过滤掉一些没啥大问题的错误

㈢分别重启服务器ODDEVEN上的mysql服务
㈣分别在服务器ODD、EVEN上查看做为主服务器状态
在ODD
复制代码代码如下:
mysql>flushtableswithreadlock;#防止进入新的数据
QueryOK,0rowsaffected(0.00sec)
mysql>showmasterstatus\G;
***************************1.row***************************
File:mysql-bin.000007
Position:438
Binlog_Do_DB:db_rocky
Binlog_Ignore_DB:mysql
1rowinset(0.00sec)

在EVEN
复制代码代码如下:
mysql>flushtableswithreadlock;
QueryOK,0rowsaffected(0.00sec)
mysql>showmasterstatus\G;
***************************1.row***************************
File:mysql-bin.000008
Position:107
Binlog_Do_DB:db_rocky
Binlog_Ignore_DB:mysql
1rowinset(0.01sec)

㈤分别在服务器ODD、EVEN上用changemaster语句指定同步位置:
在ODD
复制代码代码如下:
mysql>changemastertomaster_host="192.168.1.115",master_user="water",master_password="cdio2010",
->master_log_file="mysql-bin.000008",master_log_pos=107;
QueryOK,0rowsaffected(0.05sec)

在EVEN
复制代码代码如下:
mysql>changemastertomaster_host="192.168.1.116",master_user="water",master_password="cdio2010",
->master_log_file="mysql-bin.000007",master_log_pos=438;
QueryOK,0rowsaffected(0.15sec)

注:master_log_file,master_log_pos由上面主服务器查出的状态值中确定
master_log_file对应File,master_log_pos对应Position
在ODDEVEN上
复制代码代码如下:
mysql>unlocktables;
QueryOK,0rowsaffected(0.00sec)

㈥分别在服务器ODD、EVEN上启动从服务器线程
复制代码代码如下:
mysql>startslave;
QueryOK,0rowsaffected(0.00sec)

分别在服务器ODD、EVEN上查看从服务器状态:
复制代码代码如下:
ODD上
mysql>showslavestatus\G;
***************************1.row***************************
主要关注以下2个参数:
...
...
Slave_IO_Running:Yes
Slave_SQL_Running:Yes
...
...
EVEN上:
mysql>showslavestatus\G;
***************************1.row***************************
主要关注以下2个参数:
...
...
Slave_IO_Running:Yes
Slave_SQL_Running:Yes
...
...

㈦测试
复制代码代码如下:
EVEN上
mysql>showdatabases;
+--------------------+
|Database|
+--------------------+
|information_schema|
|db_rocky|
|mysql|
|performance_schema|
|test|
+--------------------+
5rowsinset(0.00sec)
mysql>usedb_rocky;
Databasechanged
mysql>showtables;
Emptyset(0.00sec)
mysql>createtablewater(idint);
QueryOK,0rowsaffected(0.04sec)
mysql>insertintowatervalues(1);
QueryOK,1rowaffected(0.01sec)
mysql>commit;
QueryOK,0rowsaffected(0.00sec)
在ODD上
mysql>showtables;
+--------------------+
|Tables_in_db_rocky|
+--------------------+
|t_rocky|
|water|
+--------------------+
2rowsinset(0.00sec)
mysql>select*fromwater;
+------+
|id|
+------+
|1|
+------+
1rowinset(0.00sec)