创建 Master 实例并启动

    1. docker run -p 3307:3306 --name mysql-master \
    2. -v /mydata/mysql/master/log:/var/log/mysql \
    3. -v /mydata/mysql/master/data:/var/lib/mysql \
    4. -v /mydata/mysql/master/conf:/etc/mysql \
    5. -e MYSQL_ROOT_PASSWORD=root \
    6. -d mysql:5.7

    参数说明
    -p 3307:3306:将容器的 3306 端口映射到主机的 3307 端口
    -v /mydata/mysql/master/conf:/etc/mysql:将配置文件夹挂在到主机
    -v /mydata/mysql/master/log:/var/log/mysql:将日志文件夹挂载到主机
    -v /mydata/mysql/master/data:/var/lib/mysql/:将配置文件夹挂载到主机
    -e MYSQLROOT_PASSWORD=root:初始化 root 用户的密码
    **
    修改 master 基本配置_**

    1. vim /mydata/mysql/master/conf/my.cnf
    1. [client]
    2. default-character-set=utf8
    3. [mysql]
    4. default-character-set=utf8
    5. [mysqld]
    6. init_connect='SET collation_connection = utf8_unicode_ci'
    7. init_connect='SET NAMES utf8'
    8. character-set-server=utf8
    9. collation-server=utf8_unicode_ci
    10. skip-character-set-client-handshake
    11. skip-name-resolve

    注意:skip-name-resolve 一定要加,不然连接 mysql 会超级慢
    添加 master 主从复制部分配置

    1. server_id=1
    2. log-bin=mysql-bin
    3. read-only=0
    4. binlog-do-db=gulimall_ums
    5. binlog-do-db=gulimall_pms
    6. binlog-do-db=gulimall_oms
    7. binlog-do-db=gulimall_sms
    8. binlog-do-db=gulimall_wms
    9. binlog-do-db=gulimall_admin
    10. replicate-ignore-db=mysql
    11. replicate-ignore-db=sys
    12. replicate-ignore-db=information_schema
    13. replicate-ignore-db=performance_schema

    重启master
    创建 Slave 实例并启动

    1. docker run -p 3317:3306 --name mysql-slaver-01 \
    2. -v /mydata/mysql/slaver/log:/var/log/mysql \
    3. -v /mydata/mysql/slaver/data:/var/lib/mysql \
    4. -v /mydata/mysql/slaver/conf:/etc/mysql \
    5. -e MYSQL_ROOT_PASSWORD=root \
    6. -d mysql:5.7

    修改 slave 基本配置

    1. vim /mydata/mysql/slaver/conf/my.cnf
    1. [client]
    2. default-character-set=utf8
    3. [mysql]
    4. default-character-set=utf8
    5. [mysqld]
    6. init_connect='SET collation_connection = utf8_unicode_ci'
    7. init_connect='SET NAMES utf8'
    8. character-set-server=utf8
    9. collation-server=utf8_unicode_ci
    10. skip-character-set-client-handshake
    11. skip-name-resolve
    12. server_id=2
    13. log-bin=mysql-bin
    14. read-only=1
    15. binlog-do-db=gulimall_ums
    16. binlog-do-db=gulimall_pms
    17. binlog-do-db=gulimall_oms
    18. binlog-do-db=gulimall_sms
    19. binlog-do-db=gulimall_wms
    20. binlog-do-db=gulimall_admin
    21. replicate-ignore-db=mysql
    22. replicate-ignore-db=sys
    23. replicate-ignore-db=information_schema
    24. replicate-ignore-db=performance_schema

    重启slave
    为 master 授权用户来他的同步数据
    1、进入 master 容器
    docker exec -it mysql /bin/bash
    2、进入 mysql 内部 (mysql –uroot -p)
    1)、授权 root 可以远程访问( 主从无关,为了方便我们远程连接 mysql)
    grant all privileges on . to ‘root’@’%’ identified by ‘root’ with grant option;
    flush privileges;
    2)、添加用来同步的用户
    GRANT REPLICATION SLAVE ON . to ‘backup’@’%’ identified by ‘123456’;
    3、查看 master 状态
    show master status\G;
    5、配置 slaver 同步 master 数据
    1、进入 slaver 容器
    docker exec -it mysql-slaver-01 /bin/bash
    2、进入 mysql 内部(mysql –uroot -p)
    1)、授权 root 可以远程访问( 主从无关,为了方便我们远程连接 mysql)
    grant all privileges on . to ‘root’@’%’ identified by ‘root’ with grant option;
    flush privileges;2)、设置主库连接
    change master to
    master_host=’mysql-master.gulimall’,master_user=’backup’,master_password=’123456’,mas
    ter_log_file=’mysql-bin.000003’,master_log_pos=0,master_port=3306;
    3)、启动从库同步
    start slave;
    4)、查看从库状态
    show slave status\G;
    至此主从配置完成;
    总结:
    1)、主从数据库在自己配置文件中声明需要同步哪个数据库,忽略哪个数据库等信息。
    并且 server-id 不能一样
    2)、主库授权某个账号密码来同步自己的数据
    3)、从库使用这个账号密码连接主库来同步数据

    下载安装 Sharding-Proxy
    镜像方式

    1. docker pull apache/sharding-proxy
    1. docker run -d -v /mydata/sharding-proxy/conf:/opt/sharding-proxy/conf -v /mydata/sharding-proxy/lib:/opt/sharding-proxy/lib --env PORT=3318 -p 13308:3318 --name sharding-proxy apache/sharding-proxy:latest