mysql 主从同步
以mariadb为例

1,主库my.cnf 配置

    #设置在网络传输中一次消息传输量的最大值。系统默认值 为1MB,最大值是1GB,必须设置1024的倍数。
    max_allowed_packet=32M

    #开启主从同步
    log-bin = /var/lib/mysql/mysql-bin
    server-id = 1

    # 只同步哪些数据库,除此之外,其他不同步
    binlog-do-db = yhgj
    binlog-do-db = yhgj_us

    # 日志保留时间(天)
    expire_logs_days = 7

    # 控制binlog的写入频率。每执行多少次事务写入一次
    # 这个参数性能消耗很大,但可减小MySQL崩溃造成的损失
    sync_binlog = 5

    # 日志格式,建议mixed
    # statement 保存SQL语句
    # row 保存影响记录数据
    # mixed 前面两种的结合
    binlog_format = mixed

    #批量插入数据缓存大小,可以有效提高插入效率,默认为8M
    bulk_insert_buffer_size=64M

    #指定binary log缓存的最大容量,如果设置的过小,则在执行复杂查询语句时MySQL会出错
    max_binlog_cache_size=2G

    #binglog缓存区大小。
    binlog_cache_size=4M

    #mysql查询日志
    general_log=ON
    general_log_file=/var/log/mysql/mysql.log

    #mysql 慢查询
    slow_query_log = ON
    slow_query_log_file = /var/log/mysql/slow-query.log
    long_query_time = 1

    #最大连接数与超时
    max_connections=3000
    wait_timeout=600
    interactive_timeout=600
    
2,从库 my.cnf 配置
    server-id = 2
    #只读
    read_only=1

    #mysql查询日志
    general_log=ON
    general_log_file=/var/log/mysql/mysql.log

    #mysql 慢查询
    slow_query_log = ON
    slow_query_log_file = /var/log/mysql/slow-query.log
    long_query_time = 1

    #最大连接数与超时
    max_connections=3000
    wait_timeout=600
    interactive_timeout=600

3,启动主库
    systemctl restart mariadb.service
    
    查看主库状态
    MariaDB [casino]> show master status;
    +---------------------------+------------------+----------------------+---------------------------+
    | File                          | Position       | Binlog_Do_DB | Binlog_Ignore_DB |
    +---------------------------+------------------+----------------------+---------------------------+
    | mysql-bin.000003 | 221832215 | yhgj,yhgj_us     |                                 |
    +---------------------------+------------------+----------------------+---------------------------+

4,启动从库
    systemctl restart mariadb.service
    
    //设置读取主库bin-log日志
    change master to master_host='192.168.2.43', master_user='root', master_password='123456', master_port=3306, master_log_file='mysql-bin.000003', master_log_pos=221832215, master_connect_retry=30;
    
    上面执行的命令的解释:

        master_host         # Master的IP地址
        master_user         #用于同步数据的用户(在主库中授权的用户)
        master_password     #同步数据用户的密码
        master_port            #主数据库服务的端口
        masterlogfile        #指定从库从哪个日志文件开始读复制数据(主库上执行命令的结果的File字段)
        masterlogpos        #从哪个POSITION号开始读(主库上执行命令的结果的Position字段)
        masterconnectretry     #当重新建立主从连接时,如果连接建立失败,间隔多久后重试。单位为秒,默认设置为60秒,同步延迟调优参数。

    //开始同步主库
    start slave;
    
    //查看同步状态    ,Slave_IO_Running ,Slave_SQL_Running 均为yes表示同步成功
    MariaDB [(none)]> show slave status;
    +---------------------+-------------------+--------------------+----------------------+----------------------------+---------------------------+-----------------------------+
    | Master_Host  | Master_User | Master_Port | Connect_Retry | Master_Log_File     | Slave_IO_Running | Slave_SQL_Running |
    +---------------------+-------------------+--------------------+-----------------------+---------------------------+---------------------------+------------------------------+
    | 192.168.2.43  |         root        |        3306       |            30            | mysql-bin.000003 |              Yes              |               Yes               |
    +---------------------+-------------------+--------------------+-----------------------+---------------------------+---------------------------+------------------------------+




阅读 156 562