- 安装docker
- 编辑/etc/docker/daemon.json 镜像文件地址
{
"registry-mirrors":["https://uulfe4bd.mirror.aliyuncs.com"]
}
- 启动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启动成功!!!
- 查看镜像
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
- 删除容器
# 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=》系统)
- 退出容器
# exit
- 进入容器
docker exec -it 容器名称 /bin/bash
- 安装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
- 开始搭建主从复制
启动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,一定要配置,其它的可以没有
- 查看容器IP:
ifconfig
- 我以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
- 登陆主机mysql 这个时候就产生binlog了,离成功不远了!
从机操作
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;
24. 查看主机状态:show master status;
- 查看从机状态:show slave status\G;
- 主从复制成功实现
- 主主复制
这样就实现主主复制了。挺简单的
28.排错
在主库,执行:
show processlist;
[root@ed434a1db697 mysql]# netstat -natp
作者:fyihdg
来源:优快云
原文:https://blog.youkuaiyun.com/fyihdg/article/details/78951357
版权声明:本文为博主原创文章,转载请附上博文链接!