今天一下我使用docker搭建MySQL主从复制的功能吧。 一、我们需要先安装好docker在虚拟机中 我现在使用的Centos 7 去操作的,安装之前先查看一下有没有安装过吧。 二、开始安装docker 等待安装完成就好了 -v 代表的是docker容器中的MySQL文件挂载到宿主机的位置(不能是相对路径哦!),如果宿主机没有这个文件夹会自动创建。 启动两个MySQL所以有两行代码。 查看到都已经启动成功了 配置完成后接下来需要重启我的mysql3307和mysql3308容器,并在master主机中创建一个用户添加slave和replication权限 接下来设置salav机,连接方法跟上述一样,运行下面的语句时一定要设置成你对应的ip,端口号,账号,密码还有偏移量,偏移量是master主机的Postition就是上一张图的Postition字段对应的值,一定别错了。 启动slave的SQL和IO线程之后如图会显示为yes 主机通过 至此主从其实已经搭建完成,现在我们可以试试效果,现在我的主机和从机ybx数据库都没有表信息,我们现在创建一个user表
查询docker安装过的包:
#通过这个命令可以查看是否有安装过。 yum list installed | grep docker
现在我们开始安装docker了,运行命令 sudo yum install docker #启动docker容器 sudo service docker start
三、在docker中安装MySQL5.7版本
先查看MySQL的镜像有那些
sudo docker search mysql
找到我们需要pull的mysql5.7进行pull
docker pull mysql:5.7
安装完毕,接下来就是运行MySQL容器了,我启动不了太多的虚拟机所以我在一个docker中运行两个MySQL的实例来达到主从复制的功能。
三、正式开始搭建主从复制首先需要运行容器docker run --name mysql3307 -p 3307:3306 --privileged=true -e MYSQL_ROOT_PASSWORD=root -eMYSQL_DATABASE=ybx -e MYSQL_USER=user -eMYSQL_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:5.7
docker run --name mysql3308 -p 3308:3306 --privileged=true -e MYSQL_ROOT_PASSWORD=root -eMYSQL_DATABASE=ybx -e MYSQL_USER=user -eMYSQL_PASSWORD=pass -v /home/mysql/docker-data/3308/conf:/etc/mysql/conf.d -v /home/mysql/docker-data/3308/data/:/var/lib/mysql -v /home/mysql/docker-data/3308/logs/:/var/log/mysql -d mysql:5.7
运行完成之后通过docker ps
接下来使用navicat连接一下
现在都已经连接完了要开始配置主从复制了。
先进入宿主机的目录
/home/mysql/docker-data/3307/conf
/home/mysql/docker-data/3308/conf
配置my.cnf如果没有我把文件内容放在下面# For advice on how to change settings please see # https://dev.mysql.com/doc/refman/5.7/en/server-configuration-defaults.html [mysqld] # # Remove leading # and set to the amount of RAM for the most important data # cache in MySQL. Start at 70% of total RAM for dedicated server, else 10%. # innodb_buffer_pool_size = 128M # # Remove leading # to turn on a very important data integrity option: logging # changes to the binary log between backups. # log_bin # # Remove leading # to set options mainly useful for reporting servers. # The server defaults are faster for transactions and fast SELECTs. # Adjust sizes as needed, experiment to find the optimal values. # join_buffer_size = 128M # sort_buffer_size = 2M # read_rnd_buffer_size = 2M #datadir=/home/mysql/docker-data/3307/data #socket=/home/mysql/docker-data/3307/mysql.sock character_set_server=utf8 init_connect='SET NAMES utf8' # Disabling symbolic-links is recommended to prevent assorted security risks symbolic-links=0 #log-error=/home/mysql/docker-data/3307/logs/mysqld.log #pid-file=/home/mysql/docker-data/3307/mysqld.pid #标识符不能重复 从机需要换一个id server-id=1283307 #开启复制功能 log-bin=mysql-bin #这个地方如果是有两台主机就是2如果三台就是3一定要匹配噢,如果主主复制可能会出现id重复 auto_increment_increment=2 #自增从1开始 从机可改为从2开始 auto_increment_offset=1 #忽略大小写 lower_case_table_names=1 #要同步的mstest数据库,要同步多个数据库 现在只同步一个ybx binlog-do-db=ybx #要忽略的数据库 binlog-ignore-db=mysql #rpl_semi_sync_master_enabled=1 #rpl_semi_sync_master_timeout=10000
#连接3307mysql配置权限,我的主机是3307 #首先进入mysql容器内部 因为我宿主机是没有安装MySQL的所以才需要进入内部,你们安装了的话之间外部MySQL命令设置ip端口号就好了 docker exec -it mysql3307 bash #连接MySQL mysql -uroot -proot #设置权限 GRANT REPLICATION SLAVE,FILE,REPLICATION CLIENT ON *.* TO 'repluser'@'%' IDENTIFIED BY '123456'; #刷新权限 FLUSH PRIVILEGES;
这是设置成功的图片,接下来因为我在MySQL的命令行输入命令好像出现问题了,接下来关于mysql的操作就在navicat操作了
查看一下master的二进制日志文件
SHOW MASTER STATUS
change master to master_host='192.168.1.128',master_port=3307,master_user='repluser',master_password='123456',master_log_file='mysql-bin.000001',master_log_pos=629; #开启slave,启动SQL和IO线程 start slave; #查看slave的状态 G是格式化的意思 show slave statusG
从机通过SHOW PROCESSLIST;
查看进程信息,如下图可以明确看到在等待master发送事件和从服务器已读取所有中继日志;等待更多的更新
SHOW PROCESSLIST;
查看进程信息,如下图可以明确看到主机已将binlog日志发送给从机,等待更多的更新操作
运行下面的建表语句CREATE TABLE `user` ( `id` int NOT NULL, `name` varchar(255) NULL, PRIMARY KEY (`id`) );
只在3307数据库创建了user表现在3308也有了哦。
现在宣布这次搭建圆满完成!!!
我是叶不修,一个想进大厂的憨憨程序猿。
本网页所有视频内容由 imoviebox边看边下-网页视频下载, iurlBox网页地址收藏管理器 下载并得到。
ImovieBox网页视频下载器 下载地址: ImovieBox网页视频下载器-最新版本下载
本文章由: imapbox邮箱云存储,邮箱网盘,ImageBox 图片批量下载器,网页图片批量下载专家,网页图片批量下载器,获取到文章图片,imoviebox网页视频批量下载器,下载视频内容,为您提供.
阅读和此文章类似的: 全球云计算