centos7 mysql读写分离_Centos7 docker mysql 读写分离安装配置

docker 下载mysql镜像

docker pull mysql

正常情况下单数据库启动

docker run -itd --name mysql-test -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 mysql

主从数据库读写分离(数据库配置相关)

我这里用的是两台虚拟机进行配置的

创建docker的文件挂载目录(主从数据库都创建出来)

在宿主机上创建两个文件夹:

/etc/mysql/conf.d 存放配置文件

/etc/mysql/data 存放MySQL数据

配置mysql 数据库

在创建好的/etc/mysql/conf.d 位置 创建 my.cnf 文件

主数据库配置文件数据如下:

{

[mysqld]

pid-file        = /var/run/mysqld/mysqld.pid

socket          = /var/run/mysqld/mysqld.sock

datadir        = /var/lib/mysql

secure-file-priv= NULL

#server-id //[必须]服务器唯一ID,默认是1,一般取IP最后一段

server-id = 1

#log-bin [必须]启用二进制日志

log-bin = master-bin

character-set-server=UTF8MB4

default-storage-engine=INNODB

# Disabling symbolic-links is recommended to prevent assorted security risks

symbolic-links=0

# Custom config should go here

!includedir /etc/mysql/conf.d/

[mysql]

default-character-set=UTF8MB4

}

从数据库配置文件数据如下:

{

[mysqld]

pid-file        = /var/run/mysqld/mysqld.pid

socket          = /var/run/mysqld/mysqld.sock

datadir        = /var/lib/mysql

secure-file-priv= NULL

server-id = 2#[必须]服务器唯一ID,从数据库id,一般取IP最后一段

skip-log-bin  # slave关闭命令日志 减少延时

relay-log = slave-relay-bin

log-slave-updates = 1

read-only = 1

character-set-server=UTF8MB4

default-storage-engine=INNODB

# Disabling symbolic-links is recommended to prevent assorted security risks

symbolic-links=0

# Custom config should go here

!includedir /etc/mysql/conf.d/

[mysql]

default-character-set=UTF8MB4

}

配置完成后:

运行主数据库

docker run --name mysql-magter -v /etc/mysql/conf.d:/etc/mysql/conf.d -v /etc/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 -d -p 3308:3306 mysql:latest

运行从数据库

docker run --name mysql-slave -v /etc/mysql/conf.d:/etc/mysql/conf.d -v /etc/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 -d -p 3308:3306 mysql:latest

进入数据库容器

dpcker exec -it 数据库名 bash

数据库名 也可以是 容器ID

docker ps -a 命令里面查看到

6b7a2234af1e

因为MySQL8.0版本的密码加密方式跟5.7版本不一样了,这里还是改成5.7版本的密码加密方式,不然的话,navicat这类客户端连接工具是连不上的,从库连接主库也可能会有问题

mysql> flush privileges;

mysql> GRANT ALL ON *.* TO 'root'@'%';

mysql> ALTER USER 'root'@'%' IDENTIFIED BY '数据库密码' PASSWORD EXPIRE NEVER;

mysql> ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '数据库密码';

主从服务器 都给更改一下加密方式

在主数据库里执行

mysql>show master status;

6b7a2234af1e

在从数据库里执行

mysql> change master to master_host = '主数据库IP地址',master_user = '主数据库用户', master_password = '主数据库密码',master_port=设置的主数据库对外端口号(默认3306的情况下可以不需要这一设置), master_log_file = '查询到主数据库的master File值 ',master_log_pos = 查询到主数据库的master Position值;

执行完后

mysql>start slave

不带任何参数,表示同时启动I/O 线程和SQL线程。

I/O线程从主库读取bin log,并存储到relay log中继日志文件中。

SQL线程读取中继日志,解析后,在从库重放。

查看配置结果

mysql>show slave satus\G

如下两个值都显示 yes 的时候 表示配置成功

Slave_IO_Running: Yes

Slave_SQL_Running: Yes

6b7a2234af1e

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值