MySQL主主复制

MySQL Master Master Repliction教程

本教程介绍如何设置MySQL master-master复制。 我们需要复制MySQL服务器来实现高可用性(HA)。 在我的情况下,我需要两个相互同步的主器件,以便如果其中一个主机掉线,则其他主机可以接管并且不会丢失任何数据。 同样,当第一个再次上升时,它仍将被用作活动的Minion。

这是一个基本的一步一步的教程,它将覆盖mysql主从复制,同时也将描述mysql的master和master的复制。

概念: 我们将系统1称为master1,slave2和system2称为master2和slave 1。

第1步:

在主机1和从机1上安装mysql 1.在两个系统上配置网络服务,如

Master 1 / Slave 2 ip:192.168.16.4

Master 2 / Slave 1 ip:192.168.16.5

第2步:

在Master 1上,在my.cnf中进行更改:

[mysqld]
datadir = / var / lib / mysql
socket = / var / lib / mysql / mysql.sock
old_passwords = 1

log-bin
binlog-do-db = <database name>#输入应该被复制的数据库
binlog-ignore-db = mysql#输入应该忽略的数据库进行复制
binlog-ignore-db = test

server-id = 1

[mysql.server]
user = mysql
basedir = / var / lib


[mysqld_safe]
err-log = / var / log / mysqld.log
pid-file = / var / run / mysqld / mysqld.pid

第3步:

在master 1上,在mysql中创建一个复制从属帐户。

mysql> grant replication slave on *.* to 'replication'@192.168.16.5 \
identified by 'slave';

并重新启动mysql master1。

第4步:

现在在Slave1或Master2上编辑my.cnf:

[mysqld]
datadir = / var / lib / mysql
socket = / var / lib / mysql / mysql.sock
old_passwords = 1

server-id = 2

master-host = 192.168.16.4
master-user =复制
master-password = slave
主端口= 3306

[mysql.server]
user = mysql
basedir = / var / lib

[mysqld_safe]
err-log = / var / log / mysqld.log
pid-file = / var / run / mysqld / mysqld.pid

第5步:

重新启动mysql slave 1和at

mysql> start slave;
mysql> show slave status\G;


*************************** 1.行******************** *******

Slave_IO_State:等待主人发送事件
Master_Host:192.168.16.4
Master_User:replica
Master_Port:3306
Connect_Retry:60
Master_Log_File:MASTERMYSQL01-bin.000009
Read_Master_Log_Pos:4
Relay_Log_File:MASTERMYSQL02-relay-bin.000015 Relay_Log_Pos:3630
Relay_Master_Log_File:MASTERMYSQL01-bin.000009
Slave_IO_Running:是的
Slave_SQL_Running:是的
Replicate_Do_DB:
Replicate_Ignore_DB:
Replicate_Do_Table:
Replicate_Ignore_Table:
Replicate_Wild_Do_Table:
Replicate_Wild_Ignore_Table:
Last_Errno:0
Last_Error:
Skip_Counter:0
Exec_Master_Log_Pos:4
Relay_Log_Space:3630
直到条件:无
Until_Log_File:
Until_Log_Pos:0
Master_SSL_Allowed:不
Master_SSL_CA_File:
Master_SSL_CA_Path:
Master_SSL_Cert:
Master_SSL_Cipher:
Master_SSL_Key:
Seconds_Behind_Master:1519187

1排(0.00秒)

上面突出显示的行必须指示相关日志文件,Slave_IO_Running和Slave_SQL_Running:必须为YES。

第6步:

主人1:

显示主状态;
+ ------------------------ + ---------- + ------------- - + ------------------ +
| 文件| 职位| Binlog_Do_DB | Binlog_Ignore_DB |
+ ------------------------ + ---------- + ------------- - + ------------------ +
| MysqlMYSQL01-bin.000008 | 410 | adam | |
+ ------------------------ + ---------- + ------------- - + ------------------ +
1排(0.00秒)

上述情况适用于主从,现在我们将为同一系统创建一个从站主站点,并且它将作为主站主。

第7步:

在Master2 / Slave 1上,编辑my.cnf和主表项:

[mysqld]
datadir = / var / lib / mysql
socket = / var / lib / mysql / mysql.sock
#默认使用旧密码格式与mysql 3.x兼容
#客户端(那些使用mysqlclient10兼容包)。
old_passwords = 1
server-id = 2

master-host = 192.168.16.4
master-user =复制
master-password = slave
主端口= 3306

log-bin#信息成为主人添加
binlog-do-db = adam

[mysql.server]
user = mysql
basedir = / var / lib

[mysqld_safe]
err-log = / var / log / mysqld.log
pid-file = / var / run / mysqld / mysqld.pid

第8步:

在master1上为master1创建复制从属帐户:

mysql> grant replication slave on *.* to 'replication'@192.168.16.4 identified by 'slave2';

第9步:

在master1上编辑my.cnf,了解其主人的信息。

[mysqld]
datadir = / var / lib / mysql
socket = / var / lib / mysql / mysql.sock

#默认使用旧密码格式与mysql 3.x兼容
#客户端(那些使用mysqlclient10兼容包)。
old_passwords = 1


log-bin
binlog-do-db = adam
binlog-ignore-db = mysql
binlog-ignore-db = test

server-id = 1
信息成为Minion。
master-host = 192.168.16.5
master-user =复制
master-password = slave2
主端口= 3306

[mysql.server] user = mysqlbasedir = / var / lib

第10步:

重新启动mysql master1和master2。

在mysql master1上:

mysql> start slave;

在mysql master2上:

mysql > show master status;

在mysql master 1:

mysql> show slave status\G;


*************************** 1.行******************** *******
Slave_IO_State:等待主人发送事件
Master_Host:192.168.16.5
Master_User:replica
Master_Port:3306
Connect_Retry:60
Master_Log_File:Mysql1MYSQL02-bin.000008
Read_Master_Log_Pos:410
Relay_Log_File:Mysql1MYSQL01-relay-bin.000008
Relay_Log_Pos:445
Relay_Master_Log_File:Mysql1MYSQL02-bin.000008
Slave_IO_Running:是的
Slave_SQL_Running:是的
Replicate_Do_DB:
Replicate_Ignore_DB:
Replicate_Do_Table:
Replicate_Ignore_Table:
Replicate_Wild_Do_Table:
Replicate_Wild_Ignore_Table:
Last_Errno:0
Last_Error:
Skip_Counter:0
Exec_Master_Log_Pos:410
Relay_Log_Space:445
直到条件:无
Until_Log_File:
Until_Log_Pos:0
Master_SSL_Allowed:不
Master_SSL_CA_File:
Master_SSL_CA_Path:
Master_SSL_Cert:
Master_SSL_Cipher:
Master_SSL_Key:
Seconds_Behind_Master:103799
1排(0.00秒)

错误:
未指定查询

检查hightereded行,确保它的运行。 现在,您可以在数据库中创建表,您将看到从站中的更改。 请享用!!

赞(52) 打赏
未经允许不得转载:优客志 » 系统运维
分享到:

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏