从零开始,通过docker实现mysql 主从复制,主主复制,图文并茂,保证可以实现!
2018-01-02 14:06
1306 查看
1.安装镜像
第一次实现docker实现mysql 主从复制的时候,各种百度,各种热折腾,用了业余几天时间才实现!!现在把实现的详细过程,全部写出来,希望参对大家有所帮助。首先,准备好环境,镜像:CentOS-7-x86_64-DVD-1503-01.iso。用虚拟机安装,我的VMware Workstation14版本,安装虚拟机的过程,我不再这里讨论了。安装好后,如下:通过ifconfig,不能查询得ip地址,得用ip addr然后下载xshell,通过它连接虚拟机,方便复制粘贴操作,xshell输入ssh IP地址。2.安装docker
很简单,命令:yum install -y docker接下来,修改镜像地址,编辑/etc/docker/daemon.jsonvim 没装,其实vi 也可以用,但vim可以对关键字加亮,所以安装vim ,命令:
yum -y install vim
Rpm方式卸载旧docker# rpm -qa | grep -i docker //查找已经安装docker# rpm -e [module1][module2][.....] //卸载dockeryum方式卸载docker# yum -remove //另外一种卸载docker的方法退出保存。启动docker:
systemctl start docker //centos7及以后版本
# service docker start //centos6及之前的版本查看镜像docker images此时没有镜像,抓取镜像:抓取镜像docker pull registry.cn-hangzhou.aliyuncs.com/moensun/centos7再查看镜像,此时已经有镜像了:创建docker 容器(可以根据一个镜像创建多个容器)docker run -tid 镜像ID/usr/sbin/init //centos7版本。使用/usr/sbin/init解决systemctl报错不能使用的问题docker run -tid 镜像ID/bin/bash //非centos7查看容器列表docker ps -a删除镜像# docker rmi 镜像ID# docker rmi c862fd4c865c删除容器# docker rm 容器名称# docker rmDocker文件拷贝(容器<=>docker)# docker cp 原路径 docker容器路径(系统=》docker)# docker cpMySQL-server-5.6.38-1.el7.x86_64.rpm mysql_master2:/root/# docker cp docker容器路径 原路径(docker=》系统)退出容器# exit进入容器docker exec -it 容器名称 /bin/bash进入容器后,注意变化,之前是root@localhst,现在变成root@容器id,也就是容器ID,现在进入容器后,你可以理解成,一个全新的linux操作系统,就像我们wondow下安装VMware Workstation后,成功通过镜像安装一台linux的道理是样的!你在容器的干什么,装什么不会影响到宿主,两个操作系统是隔离的,独立的。退出容器的命令是:exit。接下来,按照这样步骤,再创建一台docker 容器。就是有一台宿主操作系统,然后通过docker,再创建两个docker容器3.两个docker 容器,分别安装mysql
安装mysql就三个命令就装好了:# wget ' target='_blank'>http://dev.mysql.com/get/mysql-community-release-el7-5.noarch.rpm# rpm -ivh mysql-community-release-el7-5.noarch.rpm# yum install mysql-community-serverwget 没有安装,现在通过命令安装wgetyum -y install wget再次执行:如下遇到下图,直接输入:y安装完成!linux 安装mysql,就三条命令就可以了,前提条件是得有网络,在无网络情况下linux 安装mysql很麻烦也挺困难的。4.开始搭建主从复制
现在架构如下:启动mysql# systemctl start mysql登陆mysqlmysql -uroot //默认没有密码设置mysql初始密码:mysql> set password = password(‘你的密码’)远程登陆授权mysql> grant all privileges on *.* to 'root'@'%' identified by 'root' with grant option;mysql> flush privileges;主从复制原理,是通过binlog实现的,如下图两个docker容器的mysql都改修改配置文件:vim /etc/my.cnf[mysqld]server-id = 2port = 3306datadir = /var/lib/mysqlsocket = /var/lib/mysql/mysql.sockdefault-storage-engine = InnoDBlog-bin = mysql-binlog-bin-index = mysql-bin.indexrelay-log = mysql-relayrelay-log-index = mysql-relay.indexexpire-logs-days = 10max-binlog-size = 100Mmax_binlog_cache_size = 8Mlog-slave-updates = 1binlog_cache_size = 4M# use MIXED binlogbinlog_format = MIXED#binlog_format = ROW#replicate-do-db = db%.%#replicate-ignore-db = mysql.%# ignore tablesreplicate-wild-ignore-table = mysql.%sync_binlog = 1relay_log_recovery = 1log_slave_updates = 1skip-name-resolvesql_mode=STRICT_TRANS_TABLES[mysqldump]quickmax_allowed_packet = 32Mserver-id 这个千万不能跟别的mysql的配置一样,无论主机还是从机server-id不能相同主要server-id = 2和log-bin = mysql-bin,一定要配置,其它的可以没有查看容器IP:我以mad_euclid为主机,distracted_wright为从机。主从复制过程(在主机上操作):1. 创建同步复制的用户mysql> create user 'hdg'@'172.17.0.%' identified by 'root';2. 给同步复制用户赋权mysql> grant replication slave on *.* to 'hdg'@'172.17.0.%' identified by 'root';mysql> flush privileges;3. 开启binlog配置时候注意几个坑:Replication-do-db的坑,如果多个库则使用多行Replication-do-db进行配置Replication-ignore-db的坑,如果忽略多个库则使用多行Replication-ignore-db进行配置4. 重启mysql#systemctl restart mysql登陆主机mysql这个时候就产生binlog了,离成功不远了!从机操作1. Stop slave;主从复制的最关键语句:2. Change master toMaster_host=’172.17.0.3’, //主机的IP地址Master_user=’hdg’,Master_password=’root’,Master_log_file=’mysql-bin.000001’,Master_log_pos=120;3. Start slave;查看主机状态:show master status;查看从机状态:show slave status\G;5.主从复制成功实现
验证,在主机上创建数据库,然后创建表,进行增删改查,会自动同步到从机上,从而实现主从复制!!哈哈,以后出去面试,可以吹牛逼了。现在互联网项目,都是读写分离,高并发解决方案之一。在主机上创建数据库:create database hdg;至此,主从复制功能,全部实现!!!!!主从复制实现了,主主复制也是一样的,反过来就行可以。6.主主复制
在之前的从机上操作:在之前的主机主机上操作:这样就实现主主复制了。挺简单的7.排错
可能有些小伙伴没有成功。这里写个检查错误的方法:在主库,执行:show processlist;[root@ed434a1db697 mysql]# netstat -natp昨天截图没有提交成功,今天找图补上,可能镜像ID不一样。如果觉得我的文章或者代码对您有帮助,可以请我喝杯咖啡您的支持将鼓励我继续创作!谢谢!
相关文章推荐
- 从零开始,通过docker实现mysql 主从复制,图文并茂,保证可以实现!
- 通过docker实现mysql主从复制
- 详解Docker方式实现MySql 主从复制(实践篇)
- docker实现mysql主从复制
- windows 下 MySQL读写分离、主从复制、通过amoeba代理实现读写分离 配置全过程
- [置顶] MySQL 5.7主从复制从零开始设置及全面详解——实现多线程并行同步,解决主从复制延迟问题!
- mysql通过gitd方式实现多线程主从复制
- 以Docker方式实现MySql 主从复制(实践篇)
- mysql主从复制(三)之实现读写分离
- MySql主从搭建、复制及配置实现
- 基于Mysql-Proxy实现Mysql的主从复制以及读写分离(下)
- mysql数据备份或转移(1)——通过数据复制实现转移
- 使用Spring实现读写分离( MySQL实现主从复制)
- MySql主从复制的简单实现
- 在linux同一台主机下面搭建两个mysql 实例并实现主从复制 (二)
- 编写脚本实现MySQL主从复制状态监控
- Linux系统实现mysql主从复制
- MySQL主从复制的实现过程(先记下备用啦)
- 使用Spring+MySql实现读写分离(三)主从复制
- 如何利用docker快速构建MySQL主从复制环境