本章记录在MySQL 学习道路上的一个重要架构设计实现。
本章采用docker 进行了初始化了两个mysql对应不同端口,进而来实现MySQL中的主从复制架构。
附上,本人的docker命令:(-v 是表示挂载,将mysql对应文件夹挂载到当前服务器的对应文件夹下)
docker run --name mysql3307 -p 3307:3306 --privileged=true -ti -e
MYSQL_ROOT_PASSWORD=123456 -e MYSQL_DATABASE=enjoy -e
MYSQL_USER=user -e MYSQL_PASSWORD=pass -v /home/mysql/docker-
data/3307/conf:/etc/mysql/conf.d -v /home/mysql/docker-
data/3307/data/:/var/lib/mysql -v /home/mysql/docker-
data/3307/logs/:/var/log/mysql -d mysql:latest
由于本人在看视频的时候,视频中使用的是MySQL 5.7 以致于,我使用MySQL5.8 的时候出现了许多错误
创建主从架构的MySQL主要分为一下几步骤。
1、(master)创建用户:create user 'repluser'@'%' identified by '‘123456';
2、 (master) 授权: GRANT REPLICATION SLAVE,FILE,REPLICATION CLIENT ON *.* TO 'repluser'@'%' with grant option;
注:MySQL 5.8 不支持,创建用户和授权同一个命令进行,要分开。
3、进行数据库配置文件设置,配置文件名称是my.cnf, 路径放置在设置的挂在的conf文件夹下。
master 配置server-id=135# 开启复制功能log-bin=mysql-binauto_increment_increment=2auto_increment_offset=1lower_case_table_names=1#binlog-do-db=mstest // 要同步的 mstest 数据库 , 要同步多个数据库#binlog-ignore-db=mysql // 要忽略的数据库
slave 配置server-id=133log-bin=mysql-binauto-increment-increment=2auto-increment-offset=2lower_case_table_names=1#replicate-do-db = wang # 需要同步的数据库#binlog-ignore-db = mysql#binlog-ignore-db = information_schema
5、在slave中设置master的信息,执行当下命令,记得修改参数
change master to master_host='192.168.88.135',master_port=3307,master_user='repluser',master_password='123456',master_log_file='mysql-bin.000001',master_log_pos=3316;
6、开启slave,启动SQL和IO线程
start slave;
7.查看slave的状态
show slave status\G
至此,一台master和一台slave的mysql主从数据库已经设置成功了。
接下来就看看效果
在3309中添加一个test信息;
刷新从库3310,发现test已经同步过来