• MySQL的主从复制


    1. 环境说明
        * docker启动
            docker run -d --name mysql8 -p 3306:3306 -e MYSQL_ROOT_PASSWORD=HeXXXX mysql:8.0.18 --lower_case_table_names=1
        
        * mysql.cnf中修改默认时区为上海
            /etc/mysql/my.cnf
            [mysqld]
            default-time-zone='+8:00'
    
        * 主机: 阿里云的MySQL数据库
            - mysql8.0.18
            - mysql.hepengju.com 101.132.97.183
            - root/HeXXXX
    
        * 从机: 腾讯云的MySQL数据库
            - mysql=8.0.18
            - mysql.hepengju.cn  118.24.46.154
            - root/HeXXXX
    
    2. 备份主机数据并再从机恢复
        * 主机备份: docker exec mysql8 sh -c 'exec mysqldump --all-databases -uroot -pHeXXXX' > all_$(date +%Y%m%d).sql
        * 从机恢复: docker exec -i mysql8 sh -c 'exec mysql -uroot -pHeXXXX' < all_$(date +%Y%m%d).sql
    
    3. 理论说明, 参考: https://www.cnblogs.com/hahahehexixihoho/p/10116061.html
        * 主机
            1) 配置唯一的server-id
            2) 开启二进制日志
            3) 获得master二进制日志文件名及位置
            4) 创建一个用于slave和master通信的用户账号
        * 从机
            1) 配置唯一的server-id
            2) 使用master分配的用户账号读取master二进制日志
            3) 启动slave服务
    
    4. 操作步骤
        * 主机
            1) 修改mysql.cnf文件, [mysqld]之后加入以下配置
                ```
                [mysqld]
                server-id=1
                log-bin=mysql-bin
                ```
            2) 重启mysql, 并创建用于同步的用户账号并分配权限
                ```
                CREATE USER 'repl'@'118.24.46.154' IDENTIFIED BY 'repl';
                GRANT REPLICATION SLAVE ON *.* TO 'repl'@'118.24.46.154';
                flush privileges;
                ```
            3) 查看master状态, 记录二进制文件名和位置
                ```
                show master status
                ```
        * 从机
            1) 修改mysql.cnf
                ```
                [mysqld]
                server-id=2
                ```
            2) 重启MySQL,打开mysql会话,执行同步语句(注意二进制文件和位置参数)
                ## 注意: MySQL8的参考手册 P240页 caching_sha2_password and Replication 部分
                ```
                change master to 
                    master_host='101.132.97.183',
                    GET_MASTER_PUBLIC_KEY = 1,
                    master_user='repl',
                    master_password='repl',
                    master_log_file='mysql-bin.000001',
                    master_log_pos=872;
                ```
            3) 启动slave同步进程并查看状态
                ```
                start slave;
                show slave statusG;
                # 当Slave_IO_Running和Slave_SQL_Running都为YES的时候就表示主从同步设置成功了
                ```
  • 相关阅读:
    查询URL字符串参数
    location 对象
    css3 文字特效
    functionDo
    css3 渐变
    [LeetCode][Java]Peeking Iterator
    [LeetCode][JavaScript]Expression Add Operators
    [LeetCode][JavaScript]Different Ways to Add Parentheses
    [LeetCode][JavaScript]Move Zeroes
    [LeetCode][JavaScript]Binary Tree Postorder Traversal
  • 原文地址:https://www.cnblogs.com/hepengju/p/12500845.html
Copyright © 2020-2023  润新知