docker容器学习实现主从复制 主主复制

  1. 安装dockerdocker容器学习实现主从复制 主主复制_第1张图片
  2. 编辑/etc/docker/daemon.json 镜像文件地址
{
"registry-mirrors":["https://uulfe4bd.mirror.aliyuncs.com"]
}
  1. 启动docker
systemctl start docker //centos7及以后版本
service docker start   //centos6及之前的版本

//如果报错docker: unrecognized service
先移除docker
[root@Sakura ~]# yum remove docker
再移除docker-selinux(如果你之前有安装过的话)

[root@Sakura ~]# yum remove docker-selinux
然后修改文件

[root@Sakura ~]# vi /etc/yum.repos.d/docker.repo
直接填入如下内容:

复制代码
[dockerrepo]
name=Docker Repository
baseurl=https://yum.dockerproject.org/repo/main/centos/$releasever/
enabled=1
gpgcheck=1

gpgkey=https://yum.dockerproject.org/gpg
复制代码
然后启动安装:

[root@Sakura ~]# yum install docker-engine
作为依赖被安装: docker-engine-selinux.noarch 0:1.10.2-1.el7.centos

然后启动docker服务:

[root@Sakura ~]# service docker start
返回如下状态码:

Starting cgconfig service:                                 [  OK  ]
Starting docker:                                           [  OK  ]
即可完美的使docker启动成功!!!
  1. 查看镜像
docker images

//出现报错Cannot connect to the Docker daemon. Is 'docker -d' running on this host?
[解决方法链接1](https://www.jianshu.com/p/3919f254e009)
[解决方法链接2](http://blog.51cto.com/wangzhao/1772261)

在这里插入图片描述
5. 抓取镜像

docker pull registry.cn-hangzhou.aliyuncs.com/moensun/centos7

在这里插入图片描述
6. 创建docker 容器(可以根据一个镜像创建多个容器)

docker run -tid 镜像ID /usr/sbin/init  //centos7版本。使用/usr/sbin/init解决systemctl报错不能使用的问题
docker run -tid 镜像ID /bin/bash     //非centos7

在这里插入图片描述
7. 查看容器列表

docker ps -a

在这里插入图片描述
8. 删除镜像

# docker rmi 镜像ID
# docker rmi c862fd4c865c
  1. 删除容器
# docker rm 容器名称
# docker rm 
Docker文件拷贝(容器<=>docker)
# docker cp 原路径 docker容器路径(系统=》docker)
# docker cpMySQL-server-5.6.38-1.el7.x86_64.rpm mysql_master2:/root/
# docker cp docker容器路径 原路径(docker=》系统)
  1. 退出容器
# exit
  1. 进入容器
    在这里插入图片描述
docker exec -it 容器名称 /bin/bash
  1. 安装mysql
yum install wget 
wget 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-server
  1. 开始搭建主从复制
    docker容器学习实现主从复制 主主复制_第2张图片
启动mysql
# systemctl start mysql

登陆mysql
mysql -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                    = 2
port                        = 3306
datadir                      = /var/lib/mysql
socket                       = /var/lib/mysql/mysql.sock
default-storage-engine          = InnoDB
log-bin                      = mysql-bin
log-bin-index                 = mysql-bin.index
relay-log                    = mysql-relay
relay-log-index               = mysql-relay.index
expire-logs-days              = 10
max-binlog-size              = 100M
max_binlog_cache_size        = 8M
log-slave-updates             = 1
binlog_cache_size            = 4M
 
# use MIXED binlog
binlog_format               = MIXED
#binlog_format              = ROW
 
#replicate-do-db             = db%.%
#replicate-ignore-db          = mysql.%
 
# ignore tables
replicate-wild-ignore-table     = mysql.%
sync_binlog                 = 1
relay_log_recovery           = 1
log_slave_updates           = 1
skip-name-resolve
 
sql_mode=STRICT_TRANS_TABLES
 
[mysqldump]
quick
max_allowed_packet = 32M


server-id  这个千万不能跟别的mysql的配置一样,无论主机还是从机server-id不能相同
主要server-id = 2和log-bin = mysql-bin,一定要配置,其它的可以没有
  1. 查看容器IP:
ifconfig
  1. 我以mad_euclid为主机,distracted_wright为从机。
主从复制过程(在主机上操作):
16.	创建同步复制的用户
    mysql> create user 'hdg'@'172.17.0.%' identified by 'root';
17.	给同步复制用户赋权
    mysql> grant replication slave on *.* to 'hdg'@'172.17.0.%' identified by 'root';
mysql> flush privileges;
18.	开启binlog
    配置时候注意几个坑:
    Replication-do-db的坑,如果多个库则使用多行Replication-do-db进行配置
Replication-ignore-db的坑,如果忽略多个库则使用多行Replication-ignore-db进行配置
19.	重启mysql
#systemctl restart mysql
  1. 登陆主机mysql 这个时候就产生binlog了,离成功不远了!
    docker容器学习实现主从复制 主主复制_第3张图片
从机操作
21. Stop slave;
主从复制的最关键语句:
22. Change master to
         Master_host=’172.17.0.3’,	//主机的IP地址
         Master_user=’hdg’,
         Master_password=’root’,
         Master_log_file=’mysql-bin.000001’,
         Master_log_pos=120;
23. Start slave;

docker容器学习实现主从复制 主主复制_第4张图片
24. 查看主机状态:show master status;
docker容器学习实现主从复制 主主复制_第5张图片

  1. 查看从机状态:show slave status\G;
    docker容器学习实现主从复制 主主复制_第6张图片
  2. 主从复制成功实现
  3. 主主复制
    docker容器学习实现主从复制 主主复制_第7张图片
    docker容器学习实现主从复制 主主复制_第8张图片
    docker容器学习实现主从复制 主主复制_第9张图片
    这样就实现主主复制了。挺简单的

28.排错
在主库,执行:
show processlist;
[root@ed434a1db697 mysql]# netstat -natp
docker容器学习实现主从复制 主主复制_第10张图片

作者:fyihdg
来源:CSDN
原文:https://blog.csdn.net/fyihdg/article/details/78951357
版权声明:本文为博主原创文章,转载请附上博文链接!

你可能感兴趣的:(mysql)