美文网首页
Centos7 docker mysql 读写分离安装配置

Centos7 docker mysql 读写分离安装配置

作者: 妖了个怪 | 来源:发表于2020-03-27 17:18 被阅读0次

    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 命令里面查看到

    因为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;

    在从数据库里执行

    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

    相关文章

      网友评论

          本文标题:Centos7 docker mysql 读写分离安装配置

          本文链接:https://www.haomeiwen.com/subject/pvfruhtx.html