mysql 多 master_MySQL Master-Master(双主)多从

使用 MySQL 5.5

Master1          Master2          Slave1           Slave2

IP:         192.168.1.26     192.168.1.27     192.168.1.28     192.168.1.29

hostname:    node-26          node-27          node-28          node-29

server id:    26               27               28               29

端口:         3306

配置自动登录:

# cat .my.cnf

[client]

user=root

password=123

chmod 600 .my.cnf

[ Master 1 ]

将配置选项添加到 my.cnf 以配置 Master

lower_case_table_names=1

skip-name-resolve

# 5.1

#default-character-set=gbk

# 5.5

character-set-server=gbk

sql-mode="STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION"

max_connections=800

default-storage-engine=innodb

log_bin_trust_function_creators=1

log-bin=mysql-bin

binlog_format=row

server-id = 26

max_binlog_size=200M

expire_logs_days = 10

binlog_cache_size = 64M

binlog-ignore-db=mysql

replicate-ignore-db=mysql

innodb_flush_log_at_trx_commit=1

sync_binlog=1

log_slave_updates = 1

relay-log-index = slave-relay-bin.index

relay-log = slave-relay-bin

# master server 1

auto_increment_increment=2

auto_increment_offset=1

# master server 2

#auto_increment_increment=2

#auto_increment_offset=2

创建一个复制用户

在 Master 服务器执行如下:

grant replication slave on *.* to replication identified by '123';

flush privileges;

-----------

备份 master

-----------

在 master 执行如下:

flush tables with read lock;

show master status\G

mysqldump --all-databases > backup.sql

scp 拷贝备份文件到 Slave 机器上

unlock tables;

-----------

配置 Slave

-----------

my.cnf 添加如下:

relay-log-index = slave-relay-bin.index

relay-log = slave-relay-bin

server-id = 27

接下来,在 Slave 上恢复备份:

mysql < backup.sql

已经在 Slave 服务器上恢复了 Master 机器的备份,现在可以启动 Slave 了。利用前面记下的 Master 的 binlog 位置,然后启动 Slave。

change master to

master_host = '192.168.1.26',

master_port = 3306,

master_user = 'replication',

master_password = '123',

master_log_file = 'mysql-bin.000001',

master_log_pos = 579;

start slave;

----------

克隆 Slave

----------

只要有一个 Slave 连在 Master 上,就可以使用这个 Slave 创建新的 Slave,而不需要再离线 Master 了。克隆 Slave 与克隆 Master 基本相同,区别在于如何找到 binlog 位置。另外,注意克隆的那个 Slave 同时还在执行从 Master 的复制。

停止 Slave:

slave> stop slave;

slave> flush tables with read lock;

# mysqldump --all-databases > backup-slave.sql

Slave 停止后,就可以像从前一样刷新(flush)数据表,然后创建备份。创建了 Slave 的备份后,使用 show slave status 命令来确定从哪里开始复制。如果要获得 Master 二进制日志中 Slave 即将执行的下一个事件的位置,请注意 Relay_Master_Log_File 和 Exec_Master_Log_Pos 字段值。

show slave status\G

...

Relay_Master_Log_File: master-bin.000001

...

Exec_Master_Log_Pos: 833

...

创建了备份然后在新 Slave 上恢复之后,将复制配置为从这个位置开始,然后启动新的 Slave:

change master to

master_host = '192.168.1.26',

master_port = 3306,

master_user = 'replication',

master_password = '123',

master_log_file = 'mysql-bin.000001',

master_log_pos = 833;

start slave;

-----------------

配置第二台 Master

-----------------

现在将 node-27 作为 master,将 node-26 作为 slave。

在 node-27 上面执行如下:

show master status\G

然后登陆 node-26 机器,执行如下:

change master to

master_host = '192.168.1.27',

master_port = 3306,

master_user = 'replication',

master_password = '123',

master_log_file = 'mysql-bin.000001',

master_log_pos = 1776;

start slave;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值