1.拉取镜像
[root@VM-24-9-centos ~]# docker pull mysql
# 如需拉取置指定版本镜像加上:版本号即可
[root@VM-24-9-centos ~]# docker pull mysql:7.6
1.创建本地文件用于挂载
[root@VM-24-9-centos ~]# mkdir -p /data/mysql/data
[root@VM-24-9-centos ~]# mkdir -p /data/mysql/conf
[root@VM-24-9-centos ~]# mkdir -p /data/mysql/conf/conf.d
2.启动一个容器,将容器内的配置文件 /etc/mysql/my.cnf,copy到我们本地,用于默认配置文件
# 启动一个容器用于复制配置文件
[root@VM-24-9-centos ~]# docker run -d -p 3306:3306 --name mysqlone mysql:latest
07c314a5e57c3a3ca8ab8ffe5937b4fdb6c87a831b7e15666ee7266feb5af42a
[root@VM-24-9-centos ~]# docker cp mysqlone:/etc/mysql/my.cnf /data/mysql/conf/
# 停止并删除该容器
[root@VM-24-9-centos ~]# docker stop mysqlone
mysqlone
[root@VM-24-9-centos ~]# docker rm mysqlone
mysqlone
# 查看配置文件是否复制成功
[root@VM-24-9-centos ~]# cd /data/mysql/conf/
[root@VM-24-9-centos conf]# ls
my.cnf
3.使用本地配置文件挂载容器内的配置文件并挂载数据文件
docker run -d -p 3306:3306 --name mysqlmaster -e MYSQL_ROOT_PASSWORD='jing1996' -v /data/mysql/conf:/etc/mysql -v /data/mysql/data:/var/lib/mysql mysql
Mysql8.0部署主从复制
1.写好配置文件
[mysqld]
pid-file = /var/run/mysqld/mysqld.pid
socket = /var/run/mysqld/mysqld.sock
datadir = /var/lib/mysql
secure-file-priv= NULL
# Custom config should go here
!includedir /etc/mysql/conf.d/
server-id=1
log-bin=mysql-bin
binlog-do-db=morin
binlog-ignore-db=mysql
- server-id :服务器Id,不能相同。
- log-bin:二进制文件存放路径,非必须,mysql8后默认存放/var/lib/mysql这里
- binlog-do-db:需要同步的数据库,如果有多个以空格隔开db1 db2 db3
- binlog-ignore-db:不需要同步的数据库 如果有多个以空格隔开db1 db2 db3
2.节点配置
2.1主节点配置
# 添加用于同步的数据库账号
CREATE USER 'rootslave1'@'110.40.158.72' IDENTIFIED WITH mysql_native_password BY '123456';
# 授权
grant replication slave on *.* to 'rootslave1'@'110.40.158.72';
# 刷新配置
FLUSH PRIVILEGES;
# 查询所有用
select user,host from mysql.user;
# 查询主节点状态
show master status;
2.2从节点配置
# 配置主从同步
change master to master_host='x.x.x.x',master_user='rootslave1',master_password='123456',master_log_file='mysql-bin.000003',master_log_pos=2384;
# 开启同步
start slave;
# 查看从节点状态
show slave status;
注意事项:
- 配置主从同步的
master_log_file
和master_log_pos
参数是根据,主节点配置里的查询主节点状态命令查看的,这里的参数直接复制过来用 - 开启同步之后查看从节点状态,必须保证
Salve_IO_Running
和Salve_SQL_Runing
为 Yes,才能同步成功。为No的情况一般是前面说的两个字段的值不对
如果需要同步的数据库在主库中已存在,是不会主动同步的,建议保留好数据删除数据库从建,就会自动同步到从库了