mariadb实现主从同步

准备两台服务器
Mariadb-Master:192.168.44.150
Mariadb-Backup:192.168.44.148

安装mariadb:

https://blog.csdn.net/qq_50247813/article/details/135402502?spm=1001.2014.3001.5502

组从复制原理如下
在这里插入图片描述

  1. 修改主数据库配置如下

    vi /etc/my.cnf.d/server.cnf
    
    [mysqld]
    character-set-server=utf8
    collation-server=utf8_general_ci
    server_id = 150
    log-bin= mysql-bin
    lower_case_table_names=1
    binlog-format=ROW
    log-slave-updates=True
    sync-master-info=1
    slave-parallel-threads=3
    binlog-checksum=CRC32 
    master-verify-checksum=1
    slave-sql-verify-checksum=1
    
  • character-set-server=utf8 设置数据库默认字符集
  • collation-server=utf8_general_ci 设置校验规则
  • server_id = 150 主从id必须唯一,推荐使用ip位
  • log-bin= mysql-bin 二进制日志,后面指定存放位置。如果只是指定名字,默认存放在/var/lib/mysql下
  • lower_case_table_names=1 库表不区分大小写
  • binlog-format=ROW 二进制日志文件格式
  • log-slave-updates=True slave更新是否记入日志
  • sync-master-info=1 值为1确保信息不会丢失
  • slave-parallel-threads=3 同时启动多少个复制线程,最多与要复制的数据库数量相等即可
  • binlog-checksum=CRC32 效验码
  • master-verify-checksum=1 启动主服务器效验
  • slave-sql-verify-checksum=1 启动从服务器效验
  1. 修改从数据库配置

     vi /etc/my.cnf.d/server.cnf
    
    	[mysqld]
    character-set-server=utf8
    collation-server=utf8_general_ci
    server_id=148
    relay_log = relay-bin
    lower_case_table_names=1
    
  • server_id=148 主从id必须唯一
  • relay_log = relay-bin 中继日志, 后面指定存放位置。如果只是指定名字,默认存放在/var/lib/mysql下
  1. 重启主从数据库,配置生效

     systemctl restart mariadb
    
  2. master节点配置

    注:如果使用普通用户需要授权binlog权限

     grant replication slave, replication client on *.* to 'user'@'%' identified by 'passwd';
    

    还有注意将slave加入到master的远程访问列表中

     GRANT ALL PRIVILEGES ON *.* to  `root`@`192.168.44.*` identified by '123456';
     flush privileges;
    

     mariadb -uroot -p123456
    
    MariaDB [(none)]> show master status;
    +------------------+----------+--------------+------------------+
    | File             | Position | Binlog_Do_DB | Binlog_Ignore_DB |
    +------------------+----------+--------------+------------------+
    | mysql-bin.000002 |     1218 |              |                  |
    +------------------+----------+--------------+------------------+
    1 row in set (0.000 sec)
    
    MariaDB [(none)]> select binlog_gtid_pos('mysql-bin.000002', 1218 );
    +--------------------------------------------+
    | binlog_gtid_pos('mysql-bin.000002', 1218 ) |
    +--------------------------------------------+
    | 0-150-6                                    |
    +--------------------------------------------+
    1 row in set (0.000 sec)
    
  3. 从节点配置

    MariaDB [(none)]> set global gtid_slave_pos='0-150-6';
    	Query OK, 0 rows affected (0.004 sec)
    	
    	MariaDB [(none)]>  change master to master_host='192.168.44.150',master_user='root',master_password='123456',master_use_gtid=slave_pos;
    	Query OK, 0 rows affected (0.008 sec)
    	
    	MariaDB [(none)]> start slave;
    	Query OK, 0 rows affected (0.005 sec)
    	
    	MariaDB [(none)]>
    
  4. 验证salve状态

    		MariaDB [(none)]> show slave status\G
    *************************** 1. row ***************************
                    Slave_IO_State: Waiting for master to send event
                       Master_Host: 192.168.44.150
                       Master_User: root
                       Master_Port: 3306
                     Connect_Retry: 60
                   Master_Log_File: mysql-bin.000002
               Read_Master_Log_Pos: 1722
                    Relay_Log_File: relay-bin.000002
                     Relay_Log_Pos: 1174
             Relay_Master_Log_File: mysql-bin.000002
                  Slave_IO_Running: Yes
                 Slave_SQL_Running: Yes
              Replicate_Rewrite_DB: 
                   Replicate_Do_DB: 
               Replicate_Ignore_DB: 
                Replicate_Do_Table: 
            Replicate_Ignore_Table: 
           Replicate_Wild_Do_Table: 
       Replicate_Wild_Ignore_Table: 
                        Last_Errno: 0
                        Last_Error: 
                      Skip_Counter: 0
               Exec_Master_Log_Pos: 1722
                   Relay_Log_Space: 1477
                   Until_Condition: None
                    Until_Log_File: 
                     Until_Log_Pos: 0
                Master_SSL_Allowed: No
                Master_SSL_CA_File: 
                Master_SSL_CA_Path: 
                   Master_SSL_Cert: 
                 Master_SSL_Cipher: 
                    Master_SSL_Key: 
             Seconds_Behind_Master: 0
     Master_SSL_Verify_Server_Cert: No
                     Last_IO_Errno: 0
                     Last_IO_Error: 
                    Last_SQL_Errno: 0
                    Last_SQL_Error: 
       Replicate_Ignore_Server_Ids: 
                  Master_Server_Id: 150
                    Master_SSL_Crl: 
                Master_SSL_Crlpath: 
                        Using_Gtid: Slave_Pos
                       Gtid_IO_Pos: 0-150-9
           Replicate_Do_Domain_Ids: 
       Replicate_Ignore_Domain_Ids: 
                     Parallel_Mode: optimistic
                         SQL_Delay: 0
               SQL_Remaining_Delay: NULL
           Slave_SQL_Running_State: Slave has read all relay log; waiting for more updates
                  Slave_DDL_Groups: 2
    Slave_Non_Transactional_Groups: 1
        Slave_Transactional_Groups: 0
    1 row in set (0.000 sec)
    
  • 20
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
当MySQL/MariaDB主从同步出现"exceeded max_allowed_packet"错误时,可以通过增加主服务器上的max_allowed_packet参数来解决。这个参数定义了发送给从服务器的单个语句的最大大小限制。你可以通过以下步骤来增加max_allowed_packet参数: 1. 连接到主服务器的终端或命令行界面。 2. 执行以下命令来编辑主服务器的配置文件(例如my.cnf或my.ini): ```shell vi /etc/my.cnf ``` 3. 在配置文件中找到部分,并在其下面添加或修改以下行: ```shell max_allowed_packet=64M ``` 这里,我们将max_allowed_packet设置为64M,你可以根据需要调整这个值。 4. 保存并关闭配置文件。 5. 重启主服务器,使配置更改生效。 请注意,这个配置更改只会影响主服务器,从服务器不需要做任何修改。通过增加max_allowed_packet参数,你可以提高主服务器发送给从服务器的数据包大小限制,从而解决"exceeded max_allowed_packet"错误。123 #### 引用[.reference_title] - *1* *3* [mysql死锁;mysql_safe方式的重启;mysql备份恢复;](https://blog.csdn.net/JackLiu16/article/details/79186011)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}} ] [.reference_item] - *2* [mysql/mariadb 主从同步出错 exceeded max_allowed_packet; Increase max_allowed_packet on master;](https://blog.csdn.net/madness1010/article/details/122839174)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值