zoukankan      html  css  js  c++  java
  • CentOS 7.2 基于Docker实现MySQL主从架构

    原文地址:https://blog.csdn.net/sunnyfg/article/details/80655823

    1.安装Docker(略)

    Centos7下安装Docker : https://www.cnblogs.com/jiangxiaobo/p/10904002.html

    https://www.runoob.com/docker/centos-docker-install.html

    2.加载mysql镜像

    https://www.runoob.com/docker/docker-install-mysql.html

    docker pull mysql:5.6

    3.添加主从数据库的配置文件

    ##新建目录和文件
    sudo mkdir -p /usr/local/mysqlData/master/cnf
    sudo mkdir -p /usr/local/mysqlData/master/data
    sudo mkdir -p /usr/local/mysqlData/slave/cnf
    sudo mkdir -p /usr/local/mysqlData/slave/data
    sudo touch /usr/local/mysqlData/master/cnf/mysql.cnf
    sudo touch /usr/local/mysqlData/slave/cnf/mysql.cnf

    编辑 /usr/local/mysqlData/master/cnf/mysql.cnf

    [mysqld]
    pid-file    = /var/run/mysqld/mysqld.pid
    socket    = /var/run/mysqld/mysqld.sock
    datadir    = /var/lib/mysql
    
    symbolic-links=0
    
    character-set-server = utf8
    #skip-networking
    innodb_print_all_deadlocks = 1
    max_connections = 2000
    max_connect_errors = 6000
    open_files_limit = 65535
    table_open_cache = 128
    max_allowed_packet = 4M
    binlog_cache_size = 1M
    max_heap_table_size = 8M
    tmp_table_size = 16M
    
    read_buffer_size = 2M
    read_rnd_buffer_size = 8M
    sort_buffer_size = 8M
    join_buffer_size = 28M
    key_buffer_size = 4M
    
    thread_cache_size = 8
    
    query_cache_type = 1
    query_cache_size = 8M
    query_cache_limit = 2M
    
    ft_min_word_len = 4
    
    log-bin = mysql-bin
    server-id = 1
    binlog_format = mixed
    
    performance_schema = 0
    explicit_defaults_for_timestamp
    
    #lower_case_table_names = 1
    
    interactive_timeout = 28800
    wait_timeout = 28800
    
    # Recommended in standard MySQL setup
    
    sql_mode=NO_ENGINE_SUBSTITUTION,NO_AUTO_CREATE_USER,STRICT_TRANS_TABLES
    
    [mysqldump]
    quick
    max_allowed_packet = 16M
    
    [myisamchk]
    key_buffer_size = 8M
    sort_buffer_size = 8M
    read_buffer = 4M
    write_buffer = 4M

    编辑/usr/local/mysqlData/slave/cnf/mysql.cnf

    [mysqld]
    pid-file    = /var/run/mysqld/mysqld.pid
    socket    = /var/run/mysqld/mysqld.sock
    datadir    = /var/lib/mysql
    
    symbolic-links=0
    
    character-set-server = utf8
    #skip-networking
    innodb_print_all_deadlocks = 1
    max_connections = 2000
    max_connect_errors = 6000
    open_files_limit = 65535
    table_open_cache = 128
    max_allowed_packet = 4M
    binlog_cache_size = 1M
    max_heap_table_size = 8M
    tmp_table_size = 16M
    
    read_buffer_size = 2M
    read_rnd_buffer_size = 8M
    sort_buffer_size = 8M
    join_buffer_size = 28M
    key_buffer_size = 4M
    
    thread_cache_size = 8
    
    query_cache_type = 1
    query_cache_size = 8M
    query_cache_limit = 2M
    
    ft_min_word_len = 4
    
    log-bin = mysql-bin
    server-id = 2
    binlog_format = mixed
    
    performance_schema = 0
    explicit_defaults_for_timestamp
    
    #lower_case_table_names = 1
    
    interactive_timeout = 28800
    wait_timeout = 28800
    
    # Recommended in standard MySQL setup
    
    sql_mode=NO_ENGINE_SUBSTITUTION,NO_AUTO_CREATE_USER,STRICT_TRANS_TABLES
    
    [mysqldump]
    quick
    max_allowed_packet = 16M
    
    [myisamchk]
    key_buffer_size = 8M
    sort_buffer_size = 8M
    read_buffer = 4M
    write_buffer = 4M

    4.启用master和slave容器

    ##master容器启用
    sudo docker run -itd -p 3307:3306 --name master -v /usr/local/mysqlData/master/cnf:/etc/mysql/conf.d -v /usr/local/mysqlData/master/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 mysql:5.6
    ##进入master容器
    sudo docker exec -it master /bin/bash
    root@ebc7017a58ef:/#
    
    ##slave容器启用
    sudo docker run -itd -p 3308:3306 --name slave -v /usr/local/mysqlData/slave/cnf:/etc/mysql/conf.d -v /usr/local/mysqlData/slave/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 mysql:5.6
    root@ee3bb51b4d14:/#

    5.数据库开启远程访问

    ##防火墙设置允许端口访问
    sudo firewall-cmd --add-port=3307/tcp --permanent
    sudo firewall-cdm --add-port=3308/tcp --permanent
    sudo firewall-cmd --reload
    
    ##设置master数据库访问权限
    root@ebc7017a58ef:/# mysql -uroot -p123456
    mysql>grant all privileges on *.* to reader@'%' identified by 'readerpwd' with grant option;
    Query OK, 0 rows affected (0.01 sec)
    
    mysql>flush privileges;
    Query OK, 0 rows affected (0.01 sec)
    
    ##设置slave数据库访问权限
    root@ee3bb51b4d14:/# mysql -uroot -p123456
    mysql>grant all privileges on *.* to slave@'%' identified by 'slavepwd' with grant option;
    Query OK, 0 rows affected (0.01 sec)
    
    mysql>flush privileges;
    Query OK, 0 rows affected (0.01 sec)

    6.设置主从同步

    ##登录master数据库查看master状态
    mysql> show master status;
    +------------------+----------+--------------+------------------+-------------------+
    | File             | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
    +------------------+----------+--------------+------------------+-------------------+
    | mysql-bin.000002 |      204 |              |                  |                   |
    +------------------+----------+--------------+------------------+-------------------+
    1 row in set (0.00 sec)
    
    mysql>
    
    其中mysql-bin.000002为日志文件,后面会用到
    
    ##配置slave
    mysql> change master to master_host='172.17.0.6',master_user='reader',master_password='readerpwd',master_log_file='mysql-bin.000002',master_log_pos=501;
    
    ##参数说明
    master_host,master数据库的ip地址
    master_user,连接master数据库的用户名
    master_password,master_user的密码
    master_log_file,日志文件,上一步中,master status对应的文件
    
    ##启动slave,slave的操作有几个,start,stop和restart
    mysql> start slave;
    
    ##查看slave状态
    mysql> show slave status;
  • 相关阅读:
    CCF第四题无向图打印路径 欧拉问题
    20160330训练赛
    POJ 3281 网络流dinic算法
    校赛E题递归形式
    Mbx1996
    good luck
    hdu1054 树形dp&&二分图
    补上题代码 hdu1520
    hdu1520 树形dp Anniversary party
    2018 Multi-University Training Contest 2
  • 原文地址:https://www.cnblogs.com/jiangxiaobo/p/10906260.html
Copyright © 2011-2022 走看看