背景:

需要搭建Mycat商用环境,使用4台虚拟机操练一下,最终的目标是:

Mysql主从复制(一主一从)

服务器情况:

机器IP

机器名

安装组件

192.168.239.144

douzi9

Master1 mycat1

192.168.239.145

douzi10

Slave1

192.168.239.146

douzi11

Master2 mycat2

192.168.239.147

douzi12

Slave2

四台服务器安装mysql参考:

https://blog.csdn.net/qq_16116549/article/details/104106070

关闭所有服务器防火墙:

systemctl stop firewalld

本文章只是一主一从,只需要 douzi9、douzi10两台虚拟机

正文:

1.douzi9 主服务器mysql配置

修改vi /etc/my.cnf

[mysqld]
# douzi add config start

## 启用二进制日志

log-bin=mysql-bin

## 主服务器唯一id

server-id=1

## 设置不要复制的数据库(可配多个)

binlog-ignore-db=mysql

## 设置需要复制的数据库

binlog-do-db=testdb

## 设置logbin格式 (STATEMENT、ROW、MIXED)

binlog_format=STATEMENT

 

# douzi add config end

2.douzi10 从服务器mysql配置

修改vi /etc/my.cnf

[mysqld]

# douzi add config start

## 主服务器唯一id

server-id=2

## 启动中继日志

relay-log=mysql-relay

# douzi add config end

3.重启mysql服务器

systemctl restart mysqld

4.查看mysql服务器状态是否正常

systemctl status mysqld

5.主机上建立账户并授权从机:

访问主机mysql服务器:mysql -uroot -p123456

执行授权sql:grant replication slave on *.* to 'slave'@'%' identified by '123456';

        注:ERROR 1819 (HY000): Your password does not satisfy the current policy requirements

       执行 set global validate_password_policy=0;
           set global validate_password_length=1; 即可

6.查看主mysql服务器状态并记录下来: show master status; 

Mysql主从复制(一主一从)

7.从机命令:

change master to master_host='192.168.239.144', master_port=3306,master_user='slave', master_password='123456',master_log_file='mysql-bin.000001',master_log_pos=438;

     注:如果以前存在过主从复制,重置从机复制命令:

           1>. stop slave; 从机执行

           2>.reset master; 主机执行

8.启动从机复制服务:start slave; 查看从机状态(列展现):show slave status\G;

Mysql主从复制(一主一从)

查看Slave_IO_Running: No 和 Slave_SQL_Running: Yes 必须都是 yes才行;

针对error错误信息:The slave I/O thread stops because master and slave have equal MySQL server UUIDs;说明 主从服务器 mysql有相同的 uuid;(根本原因:这4台服务器是克隆的同一服务器,上边有相同的mysql)

解决办法:
                  停止从库的mysqld服务,删除他的/var/lib/mysql/auto.cnf文件,再启动数据库服务即可
vi /var/lib/mysql/auto.cnf
systemctl stop mysqld
rm -f /var/lib/mysql/auto.cnf
systemctl start mysqld
再次查看show slave status\G;

Mysql主从复制(一主一从)

9.验证主从复制是否成功:

主库执行: Create database testdb; 查看从库是否有testdb;

CREATE TABLE `mytbl` (

  `id` int(11) NOT NULL,

  `name` varchar(255) DEFAULT NULL,

  PRIMARY KEY (`id`)

) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

Mysql主从复制(一主一从)

 

相关文章: