Linux 安装Docker 部署MySQL主从复制

安装dockers  参考 https://www.cnblogs.com/xiufengchen/p/10387055.html  

docker 部署MySQL主从  参考  https://blog.csdn.net/ClassmateLin/article/details/100512910

安装docker

一 docker安装:

  1 首先需要检查linux内核的版本,docker要求linux内核是在3.10之上的,

1

uname -r

  

2 更新yum源,注意这步应该是管理员权限,如果当前不是管理员,切换至管理员登录,在更新过程需要输入 y 确认

sudo yum update

3 卸载旧版本的docker

sudo yum remove docker  docker-common docker-selinux docker-engine

4 安装需要的软件包, yum-util 提供yum-config-manager功能,另外两个是devicemapper驱动依赖的

sudo yum install -y yum-utils device-mapper-persistent-data lvm2

5 设置yum源

sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo

以上三个命令执行的结果

 

 

 

6 可以查看所有仓库中所有docker版本,并选择特定版本安装

yum list docker-ce --showduplicates | sort -r

 

 

7 安装docker ,一下命令只需要执行一个就可以了.

sudo yum install docker-ce  #由于repo中默认只开启stable仓库,故这里安装的是最新稳定版17.12.0
 sudo yum install <FQPN>  # 例如:sudo yum install docker-ce-17.12.0.ce

8 启动并加入开机启动

 sudo systemctl start docker
 sudo systemctl enable docker

 

 9 查看docker的版本

docker version

 

 

 

docker 部署mysql 主从

获取Mysql镜像
网易蜂巢镜像:
拉取镜像:

docker pull hub.c.163.com/library/mysql:latest
查看镜像:docker images

创建文件夹和配置文件
 mkdir -p /docker/mysql/{master,slave}/data

 

添加主库配置文件: vim /docker/mysql/master/my.cnf

[mysqld]

user=mysql

log-bin=mysql-bin

server-id=1

character-set-server=utf8mb4

default_authentication_plugin=mysql_native_password

table_definition_cache=400

[client]

default-character-set=utf8mb4

[mysql]

default-character-set=utf8mb4

 

 

 

 

添加从库配置文件:sudo vim /docker/mysql/slave/my.cnf

[mysqld]                                                                             

user=mysql

server-id=2

character-set-server=utf8mb4

default_authentication_plugin=mysql_native_password

table_definition_cache=400

[client]

default-character-set=utf8mb4

[mysql]

default-character-set=utf8mb4

创建Mysql桥接网络,用于主从容器直接互联:
docker network create mysql

 

 

创建Mysql主库容器:

 

docker run -d --privileged=true -p 3307:3306 -v /docker/mysql/master/my.cnf:/etc/mysql/my.cnf -v /docker/mysql/master/data:/var/lib/mysql -v /docker/mysql/master/mysql-files:/var/lib/mysql-files -e MYSQL_ROOT_PASSWORD=123456 --name mysql-master --network       mysql --network-alias mysql-master mysql           

 

 

创建Mysql从库容器:

 docker run -d --privileged=true -p 3308:3306 -v /docker/mysql/slave/my.cnf:/etc/mysql/my.cnf -v /docker/mysql/slave1/data:/var/lib/mysql -v /docker/mysql/slave/mysql-files:/var/lib/mysql-files -e MYSQL_ROOT_PASSWORD=123456 --name mysql-slave --network mysql --network-alias mysql-slave mysql

配置Mysql主从复制
配置主服务器:
docker exec -it mysql-master bash
mysql -u root -p 

 密码是上面docker命令中MYSQL_ROOT_PASSWORD中设置的。

# 这里使用root用户进行主从复制, %为允许所有ip进行复制。

GRANT REPLICATION SLAVE ON *.* TO 'root'@'%';

 

# 刷新权限

flush privileges;

# 查看主服务器状态

show master status;

#需要记录其中的File,  Position字段内容

exit; # 退出mysql

exit; # 退出容器

 

 

这里开启主库远程访问权限如果从库远程连接也同理

 

命令:use mysql;

命令:select host,user from user;

命令:ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '123456';

命令:flush privileges;

 

配置从服务器:

docker ps


docker exec -it mysql-slave bash
mysql -u root -p 密码是上面docker命令中 MYSQL_ROOT_PASSWORD中设置的

 

#输入以下内容

change master to master_host='mysql-master',master_user='root',master_password='root密码',master_log_file='刚才记住的File列的内容',master_log_pos=position的内容(不用加引号),master_port=3306;

 

# 例如

change master to master_host='mysql-master',master_user='root',master_password='123456',master_log_file='mysql-bin.000005',master_log_pos=502,master_port=3306;

 

# 启动slave

start slave;

# 查看slave状态

show slave status\G;

 

 

Slave_IO_RunningSlave SQL Ruing都是Yes时,说明配置成功了,

 

测试主从复制
进入主库:docker exec -it mysql-master bashmysql -u root -p
创建数据库和表,添加测试数据:

创建数据库

create database goods;

 

进入数据库

use goods;

 

查看当前数据库

select database();

 

查看当前数据库里面的表

show tables;

 

 

创建test表

 create table test(

    id int,

city varchar(255));

 

向表中插入数据

insert into test values (1,'beijing'),(2,'shanghai');

 

查看表里的数据

select * from test;

 

 

进入从库:

docker exec -it mysql-slave bash 和 mysql -u root -p
验证数据是否同步:

show databases;

use goods;

show tables;

select * from test;

mysql 主从库配置完成

但是发现一个问题

在从库上操作增删改 的数据,主库不跟着变动

主库 上操作增删改 的数据 ,从库跟着变动

 

 

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章