docker 安装mysql 并挂载数据 配置文件,并且设置主从复制
2021/7/24 2:08:49
本文主要是介绍docker 安装mysql 并挂载数据 配置文件,并且设置主从复制,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
文章目录
- 描述
- 安装mysql
- 配置远程连接
- 主从配置
- 测试主从同步
描述
本文档记录了mysql安装过程,主从配置过程,主备实现方式。
安装mysql
- 创建mysql工作目录,用于挂载数据 配置文件等
#mkdir /root/mysql/data
#mkdir /root/mysql/conf.d
#mkdir /root/mysql/conf
- 启动一个未挂载的mysql容器
docker run -d -p 3306:3306 --name mysql -e MYSQL_ROOT_PASSWORD=123456 mysql
- 进入容器复制需要挂载的目录
# docker cp 4e71be6b176c:/var/lib/mysql /root/mysql/data
# docker cp 4e71be6b176c:/etc/mysql/my.cnf /root/mysql/conf/my.cnf
# docker cp 4e71be6b176c:/etc/mysql/conf.d /root/mysql/conf.d
#================配置文件复制,数据挂载======================== # 开启一个未挂载的容器 docker run -d -p 3306:3306 --name mysql -e MYSQL_ROOT_PASSWORD=123456 mysql # 将容器内的数据以及配置文件拷贝出来 # docker exec -it mysql /bin/bash # docker cp 4e71be6b176c:/var/lib/mysql /root/mysql/data # docker cp 4e71be6b176c:/etc/mysql/my.cnf /root/mysql/conf/my.cnf # docker cp 4e71be6b176c:/etc/mysql/conf.d /root/mysql/conf.d
- 启动mysql 其脚本如下
#================配置文件复制,数据挂载======================== # 开启一个未挂载的容器 docker run -d -p 3306:3306 --name mysql -e MYSQL_ROOT_PASSWORD=123456 mysql # 将容器内的数据以及配置文件拷贝出来 # docker exec -it mysql /bin/bash # docker cp 4e71be6b176c:/var/lib/mysql /root/mysql/data # docker cp 4e71be6b176c:/etc/mysql/my.cnf /root/mysql/conf/my.cnf # docker cp 4e71be6b176c:/etc/mysql/conf.d /root/mysql/conf.d docker stop mysql \ docker rm mysql \ docker run -d \ --restart=always \ --privileged=true \ -v /root/mysql/data/:/var/lib/mysql \ -v /root/mysql/conf.d:/etc/mysql/conf.d \ -v /root/mysql/conf/my.cnf:/etc/mysql/my.cnf \ -v /root/mysql/log:/var/log/mysql \ -p 3306:3306 \ --name mysql \ -e MYSQL_ROOT_PASSWORD=123456 \ mysql
配置远程连接
mysql>alter user 'root'@'%' identified by '123456' password expire never;
mysql>alter user 'root'@'%' identified with mysql_native_password by '123456';
mysql>flush privileges;
主从配置
- 进入容器master机器上创建主从连接账户
mysql>CREATE USER 'slaves'@ '%' IDENTIFIED BY '123456';
mysql>GRANT REPLICATION SLAVE ON *.* to 'slave'@'%';
mysql>flush privileges;
查看账户权限
mysql>show grants for root;
mysql>show grants for slaves;
- master配置my.cnf文件
[mysqld] pid-file = /var/run/mysqld/mysqld.pid socket = /var/run/mysqld/mysqld.sock datadir = /var/lib/mysql secure-file-priv= NULL server-id=201 #设置主服务器的ID,可以任意配置但是多个主从之间不能重复 innodb_flush_log_at_trx_commit=2 # 写入磁盘策略 sync_binlog=1 #开启binlog日志同步功能 expire_logs_days=180 #二进制日志保留天数 log-bin=mysql-bin-1 #binlog日志文件名(可以任意命名) #binlog-do-db=test # 这个表示只同步某个库 (如果没有此项,表示同步所有的库) #binlog-ignore-db=xxxx # 二进制日志中忽略数据库 # Disabling symbolic-links is recommended to prevent assorted security risks symbolic-links=0 # Custom config should go here !includedir /etc/mysql/conf.d/
- slave从机器配置my.cnf
[mysqld] pid-file = /var/run/mysqld/mysqld.pid socket = /var/run/mysqld/mysqld.sock datadir = /var/lib/mysql secure-file-priv= NULL read-only=1 #是否只读,0 代表非只读 1:代表只读 server-id=202 #设置主服务器的ID,可以任意配置但是多个主从之间不能重复 innodb_flush_log_at_trx_commit=2 # sync_binlog=1 #开启binlog日志同步功能 expire_logs_days=180, # 二进制日志保留天数 log-bin=mysql-bin-1 #binlog日志文件名(可以任意命名) # binlog-do-db=test # 这个表示只同步某个库 (如果没有此项,表示同步所有的库) #binlog-ignore-db=xxxx # 还有一个参数是指定不同步哪些库,这里不再赘述 # Disabling symbolic-links is recommended to prevent assorted security risks symbolic-links=0 # Custom config should go here !includedir /etc/mysql/conf.d/
- 重启master slave 数据库
进入master 数据库容器,查看主数据库状态,可以获得数据库的binlog日志文件名称和位置,用于配置从数据库开始同步的文件和位置
mysql>show master status
进入slave数据库容器
change master to master_host='192.168.43.201',master_user=' slaves ',master_password='123456!',get_master_public_key=1,master_log_file='mysql-bin-1.000002 ',master_log_pos= 650,master_port=3306;
参数说明
master_host:主数据库IP地址
master_user:主数据库连接用户名
master_password:主数据量连接密码
master_port:主数据端口
master_log_file:开始同步的主数据库日志名称,主数据库执行show master status 可获得当前binlog文件名称和位置
master_log_pos:开始同步的主数据库日志开始位置,主数据库执行show master status 可获得当前binlog文件名称和位置
get_master_public_key=1,mysql8默认使用插件caching_sha2_password连接需要拿到server的public key来加密password
- slave查看状态
开启或关闭主从同步
mysql>start slave;
查看主从同步
mysql>show slave status\G;
只有slave都为yes时配置才成功
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
测试主从同步
navicat 连接master数据库
这篇关于docker 安装mysql 并挂载数据 配置文件,并且设置主从复制的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-04部署MySQL集群项目实战:新手入门教程
- 2024-11-04如何部署MySQL集群资料:新手入门指南
- 2024-11-02MySQL集群项目实战:新手入门指南
- 2024-11-02初学者指南:部署MySQL集群资料
- 2024-11-01部署MySQL集群教程:新手入门指南
- 2024-11-01如何部署MySQL集群:新手入门教程
- 2024-11-01部署MySQL集群学习:新手入门教程
- 2024-11-01部署MySQL集群入门:新手必读指南
- 2024-10-23BinLog入门:新手必读的MySQL二进制日志指南
- 2024-10-23Binlog入门:MySQL数据库的日志管理指南