• Docker 安装mysql主从


    安装docker

    1.yum -y install docker

    2.查看是否安装成功

    docker -v

    3.接着将docker后台启动 

    systemctl start docker.service

    4.设置开机启动

    systemctl enable docker

    1.查询安装过的软件包

    yum list installed | grep docker

     

    2.卸载安装的软件包

    yum -y remove  docker.x86_64

    3.删除镜像/容器等

    rm -rf /var/lib/docker

    拉取msyql

    docker pull mysql:5.6.29

    启动msyql

    docker run -d -p 3306:3306  

    --restart=always --name mysql -e MYSQL_ROOT_PASSWORD=’admindev123$%^’mysql:5.6.29

    其中name是容器名称,MYSQL_ROOT_PASSWORD设置root密码

    通过docker ps -a查看已经在docker中启动的容器

    创建目录 /data/mysql/conf/

     

    我们将容器里的配置文件都复制到服务器里面下面是代码ID是你的容器ID

    docker cp ID:/etc/mysql/my.cnf /data/mysql/conf/

    再删除掉刚才创建的mysql容器

     

    docker run -p 3306:3306 --name slave-mysql -v /data/mysql/conf/my.cnf:/etc/mysql/my.cnf -v /data/mysql/logs:/var/log/mysql -v /data/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD='admindev123$%^' --privileged=true -d mysql:5.6.29

    Master设置

    在主机上修改配置文件:vi /data/mysql/conf/my.cnf

    放在[mysqld]下  放在[mysql_safe]里面没效果

    log_bin=master-bin #启动MySQL二进制日志

    log_bin_index = master-bin.index

    server-id=1  #服务器唯一标识

     

    _________________下面选填______________________

    expire-logs-days=7 #二进制日志的有效期

    binlog_ignore_db=mysql #不需要同步的数据库

    binlog_ignore_db=information_schema

    binlog_ignore_db=performation_schema

    binlog_ignore_db=sys

    binlog_do_db=mybatis #需要同步的数据库名字

    sync_binlog=0

    __________________________________________________

    Mysql配置参数sync_binlog说明

    MySQL提供一个sync_binlog参数来控制数据库的binlog刷到磁盘上去。

    默认,sync_binlog=0,表示MySQL不控制binlog的刷新,由文件系统自己控制它的缓存的刷新。这时候的性能是最好的,但是风险也是最大的。因为一旦系统Crash,在binlog_cache中的所有binlog信息都会被丢失。

    如果sync_binlog>0,表示每sync_binlog次事务提交,MySQL调用文件系统的刷新操作将缓存刷下去。最安全的就是sync_binlog=1了,表示每次事务提交,MySQL都会把binlog刷下去,是最安全但是性能损耗最大的设置。这样的话,在数据库所在的主机操作系统损坏或者突然掉电的情况下,系统才有可能丢失1个事务的数据。但是binlog虽然是顺序IO,但是设置sync_binlog=1,多个事务同时提交,同样很大的影响MySQL和IO性能。虽然可以通过group commit的补丁缓解,但是刷新的频率过高对IO的影响也非常大。对于高并发事务的系统来说,“sync_binlog”设置为0和设置为1的系统写入性能差距可能高达5倍甚至更多。

    所以很多MySQL DBA设置的sync_binlog并不是最安全的1,而是100或者是0。这样牺牲一定的一致性,可以获得更高的并发和性能。

    重启msyql  ID为docker启动的ID

    Docker restart ID

     

    1.进入容器内部并且进入mysql后台mysql

    #首先要进入容器内部

    docker exec -it 容器名或容器ID /bin/bash

    #进入mysql

    mysql -u root -p

    合起来写: docker exec -it ID或名称 mysql -uroot -p

     

    mysql> CREATE USER 'root'@'192.168.2.93' IDENTIFIED BY 'admindev123$%^';

    mysql> GRANT REPLICATION slave ON *.* TO 'root'@'192.168.2.93';

    mysql> FLUSH TABLES WITH READ LOCK;

    mysql > SHOW MASTER STATUS;(查看主服务器状态)

     

    Slave设置

    MASTER_LOG_FILE,MASTER_LOG_POS在主库执行 : SHOW MASTER STATUS; 命令可以取得

    进入mysql

    docker exec -it mysql mysql -uroot -p

    执行

    CHANGE MASTER TO MASTER_HOST='192.168.2.92',MASTER_PORT=3306,MASTER_USER='root',MASTER_PASSWORD='admindev123$%^',MASTER_LOG_FILE='master-bin.000001',MASTER_LOG_POS=425;

    启动 slave 线程开始同步

    START SLAVE;

    在从库 查看同步状态
    show slave status;
    show slave statusG;

    备注:Slave_IO_Running和Slave_SQL_Running都为yes才表示同步成功。

    如需想停止同步功能,则登录MySQL状态下,停止同步命令:

    stop slave;

     

    纵有白头俱老意,奈何缘浅路芊芊.
  • 相关阅读:
    0302 随想
    1231递归下降语法分析程序设计
    《构建之法》1、2、3章读后感
    复利计算总结
    操作系统实验0
    学习进度条
    0302思考并回答一些问题
    评论
    c语言文法
    词法分析
  • 原文地址:https://www.cnblogs.com/hanby/p/14151109.html
Copyright © 2020-2023  润新知