千家信息网

mysql master-master-slave实验

发表于:2024-11-11 作者:千家信息网编辑
千家信息网最后更新 2024年11月11日,实现结构: 前提条件,这是全新的安装mysql服务器,已经在运行的mysql需要先做备件,并还原到另外的机子上。master A:192.168.168.128master B:192.168.168
千家信息网最后更新 2024年11月11日mysql master-master-slave实验

实现结构:

前提条件,这是全新的安装mysql服务器,已经在运行的mysql需要先做备件,并还原到另外的机子上。


master A:192.168.168.128

master B:192.168.168.129

slave 192.168.168.130


  1. 在三台机子上分别安装mysql

    [root@yaho ~]# yum install -y mysql mysql-server mysql-dev

  2. 修改master A和master B还有slave的配置文件。

    [root@yaho ~]#vim /etc/my.cnf


    master A: 在[mysqld]内添加(修改)


    server-id = 128

    log-bin = mysql-bin

    sync-binlog = 1

    auto_increment_offset = 1 #起始值

    auto_increment_increment = 2 #步长

    slave-skip-errors=1007,1008 #跳过无法创建数据库错误和无法删除数据库错误,如果所有mysql的数据库都一样,可以不加

# slave-skip-errors=all #跳过所有错误,其实这个参数挺危险的,很容易造成几台mysql数据不一致

log-slave-updates #写入从master复制操作的记录到本地bin-log日志,以实现slave的完整同步(备份)

master B: 在[mysqld]内添加(修改)


server-id = 129

log-bin = mysql-bin

sync-binlog = 1

auto_increment_offset = 2 #起始值

auto_increment_increment = 2 #步长

slave-skip-errors=1007,1008 #跳过无法创建数据库错误和无法删除数据库错误,如果所有mysql的数据库都一样,可以不加

# slave-skip-errors=all #跳过所有错误,其实这个参数挺危险的,很容易造成几台mysql数据不一致

log-slave-updates #写入从master复制操作的记录到本地bin-log日志,以实现slave的完整同步(备份)


slave: 在[mysqld]内添加(修改)

server-id = 130

slave-skip-errors=1007,1008 #跳过无法创建数据库错误和无法删除数据库错误,如果所有mysql的数据库都一样,可以不加

# slave-skip-errors=all #跳过所有错误,其实这个参数挺危险的,很容易造成几台mysql数据不一致

log-slave-updates #写入从master复制操作的记录到本地bin-log日志,以实现slave的完整同步(备份)


3.分别启动3台master的mysql,建立同步用户,并给IP授权,允许远程访问。

[root@yaho ~]#service mysqld start

master A:

mysql> GRANT REPLICATION SLAVE ON *.* TO 'repl'@'192.168.2168.129' identified by '123456'; #给master B 授权

master B:

mysql>GRANT REPLICATION SLAVE ON *.* TO 'repl'@'192.168.168.128' identified by '123456'; #给master A授

mysql>GRANT REPLICATION SLAVE ON *.* TO 'repl'@'192.168.168.130' identified by '123456'; #给slave授权

4.查看master A 和master 的maste 状态信息:

mysql>show master status;


+------------------+----------+

| File | Position |

+------------------+----------+

| mysql-bin.000001 | 106 |

+------------------+----------+


5.连接master,实现主-主-从

master A:


mysql>change master to master_host='192.168.168.129',master_user='repl',master_password='123456',master_log_file='mysql-bin.000001',master_log_pos=106;

master B:

mysql>change master to master_host='192.168.168.128',master_user='repl',master_password='123456',master_log_file='mysql-bin.000001',master_log_pos=106;


slave:

mysql>change master to master_host='192.168.168.129',master_user='repl',master_password='123456',master_log_file='mysql-bin.000001',master_log_pos=106;


6.分别在三台机子上启动slave功能:

mysql>start slave;

mysql>show slave status\G;

如果下面两项都为YES,意味着成功。

Slave_IO_Running: Yes

Slave_SQL_Running: Yes


测试--略:

只需要在随便在哪个master创建一个数据库,然后show一下,如果另外两个mysql都有这个数据库,则意味成功。

注意:如果mysqld启动不起来,可以先注释 log-slave-updates 这行,当主从建立起来后再去掉注释。


0