继上一篇搭建MySQL后,我们再搭建一个MySQL的主从复制架构,后面再用MyCat给这个主从数据库进行读写分离
配置master主机
修改/etc/my.cnf配置
vi /etc/my.cnf
# 主机id
server-id=1
# 启用二进制日志
log-bin=mysql-bin
# 需要复制的数据库
binlog-do-db=mydb1
# 设置binlog格式
binlog_format=STATEMENT
重启mysql
service mysql restart
配置slave从机
修改/etc/my.cnf配置
vi /etc/my.cnf
# 从机id
server-id=2
# 启用中继日志
relay-log=mysql-relay
重启mysql
service mysql restart
创建从机用户
登录mysql
mysql -u root -p
在主机上执行下面命令
创建从机用户
create user 'slave'@'%' identified by '123456'
修改从机用户密码
alter user 'slave'@'%' identified with mysql_native_password by '123456';
授权
grant replication slave on *.* to 'slave'@'%';
刷新权限
flush privileges;
查看mysql数据库的user表,创建成功
查看主机状态
show master status;
其中position表示二进制日志的读取位置
从机配置主机
在从机上配置需要复制的主机
change master to master_host='192.168.50.128',
master_user='slave',
master_password='123456',
master_log_file='mysql-bin.000001',
master_log_pos=978;
启动从机模式
start slave;
查看从机状态
show slave status\G
如果启动失败,在这一行可以看到错误原因,从机的IO线程停止运行了,主机和从机的UUID必须不同
这里是因为我克隆了虚拟机,导致两台机器mysql的UUID一样
执行查看两条机器上的auto.cnf文件
vi /usr/local/mysql/data/auto.cnf
发现确实一模一样,现在把从机上的auto.cnf文件删掉,重启mysql,让它自己生成一个UUID
rm /usr/local/mysql/data/auto.cnf
service mysql restart
重新启动从机模式
start slave;
启动成功
验证主从复制
建立mydb1数据库(必须叫这个名,因为我们上面配置了需要进行主从复制的数据库)
可以用SQL或可视化工具建立,我这里为了方便,用navicat直接创建了
建完查看slave从机,刷新一下,发现从机也同步建立了mydb1数据库
现在往mydb1数据库里建个表,插入条数据试一下
insert into user(name) value('张三')
分别打开主从数据库验证,发现两个库都增加了一张表,以及一条我们插入的数据