mysql 主从数据库搭建
一、创建目录
1)在 dev/htb 下面创建文件夹 master01
htb]# mkdir mysql/master01 -p
2)进入 master01
3)mkdir conf data 创建两个文件夹
4)mkdir conf data 修改权限
二、创建配置文件
1)进入 conf
2)vim my.cnf
3)添加如下内容
[mysqld]
log-bin=mysql-bin #开启二进制日志
server-id=1 #服务 id,不可重复
三、创建容器
docker create --name percona-master01 -v /dev/htb/mysql/master01/data:/var/lib/mysql -v /dev/htb/mysql/master01/conf:/etc/my.cnf.d -p 3306:3306 -e MYSQL_ROOT_PASSWORD=root percona:5.7.23
2)创建新的连接
添加 IP地址,端口号是 3306 用户名 root 密码 root
3)连接成功之后,运行 命令界面新建查询
输入如下命令
create user ‘kgc’@’%’ identified by ‘kgc’;
grant replication slave on . to ‘kgc’@’%’;
flush privileges;
4)重启
docker restart percona-master01 && docker logs -f percona-master01
5) 新建查询,运行
show master status;
6)查看二进制日志相关的配置项
show global variables like ‘binlog%’;
上面的只要是有数据就行
7)查看 server 相关的配置项
show global variables like ‘server%’;
可以看到服务器的 id 是 1,这个id 一个集群里面是唯一的
四、搭建从库
1)创建目录
/dev/htb/mysql/slave01
cd /dev/htb/mysql/slave01
进入 slave01
mkdir conf data
2)修改权限
chmod 777 * -R
3)添加配置文件
进入 conf
vim my.cnf
添加如下内容
[mysqld]
server-id=2 #服务 id,不可重复
sql_mode=‘STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION’
4)创建容器
docker create --name percona-slave01 -v /data/mysql/slave01/data:/var/lib/mysql -v
/data/mysql/slave01/conf:/etc/my.cnf.d -p 3307:3306 -e MYSQL_ROOT_PASSWORD=root
percona:5.7.23
/dev/htb/mysql
docker create --name percona-slave01 -v /dev/htb/mysql/slave01/data:/var/lib/mysql -v /dev/htb/mysql/slave01/conf:/etc/my.cnf.d -p 3307:3306 -e MYSQL_ROOT_PASSWORD=root percona:5.7.23
5)启动
docker start percona-slave01 && docker logs -f percona-slave01
6)指定模式
set sql_mode = ‘’; set sql_mode = ‘NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES’;
CHANGE MASTER TO master_host=‘182.92.88.141’, master_user=‘kgc’, master_password=‘kgc’, master_port=3306, master_log_file=‘mysql-bin.000004’, master_log_pos=154;
7)启动同步 start slave;
8)查看 master 状态 show slave status;
看到的是两个yes 说明主从数据库已经搭建完成
五、测试
在主库新建一个数据库,新建表格,插入数据,刷新从库之后可以看到相同的数据库,相同的表格,相同的数据,测试成功