3. MariaDB设置主从复制

本文详细介绍了MySQL主从复制的配置步骤,包括在主服务器上激活二进制日志、设置唯一server_id,以及在从属服务器上指定server_id等关键配置。此外,还提供了如何获取二进制日志坐标、启动复制功能的具体示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

翻译人员: 铁锚

翻译日期: 2013年12月25日

原文链接:  Setting Up Replication

主从复制包含两个步骤: 在 master 主服务器(组)上的设置,以及在 slave 从属服务器(组)上的设置.

配置主服务器 master
  1. 如果没有启用,则需要 激活二进制日志.
  2. 给 master 设置唯一的  server_id ,所有的 slave 从属服务器也要设置  server_id; server_id值可以是整数型的数字(1 ~ 2^31-1), 在同一个复制组(replicating group)中的每台服务器的server_id都必须是唯一的.
  3. slave 从属服务器需要有连接并从master复制的权限. 通常是为每一台slave 创建一个单独的用户(user),并且只授予复制的权限(REPLICATION SLAVE 权限).
示例
GRANT REPLICATION SLAVE ON *.* TO 'replication_user'@'slave_host' IDENTIFIED BY 'bigs3cret'; 
FLUSH PRIVILEGES;
需要注意,有一些系统配置选项可能会影响主从复制,查看下面的变量以避免发生问题:
skip-networking,如果 "skip-networking=1",则服务器将限制只能由localhost连接,阻止其他机器远程连到此服务器上。
bind_address,类似地,如果 服务器只监听 127.0.0.1(localhost)的TCP/IP连接,则远程的 slave也不能连接到此服务器.
配置从属服务器 slave
  1. 给 slave 指定唯一的 server_id. 所有服务器,不管是主服务器,还是从服务器,都要设置 server_id. server_id值可以是整数型的数字(1 ~ 2^31-1), 在同一个复制组(replicating group)中的每台(/个)服务器的server_id都必须是唯一的.
要让此配置项生效,需要重新启动服务.
获取 master 的二进制日志坐标
当查看当前 二进制日志 的position(位置)时,需要阻止任何数据库的提交.可以通过此坐标点告诉slave服务器从哪一个特定的点开始复制。
  1. 在 master上执行命令 "FLUSH TABLES WITH READ LOCK",以强制写入日志,并锁定所有的表 —— 在此期间不能关闭会话,一关闭会话就会释放锁.
  2. 通过运行 "SHOW MASTER STATUS" 来获取二进制日志的当前位置信息.
  3. 记下 File 以及 Position 信息. 如果刚刚才开启了二进制日志功能,则为空.
  4. 然后,开始从master 拷贝 data 到 slave,请参考: Backup, Restore and Import
  5. 将数据从master拷贝到slave以后,可以执行"UNLOCK TABLES;"释放master上的锁。

示例如下:
--
SHOW MASTER STATUS;
+--------------------+----------+--------------+------------------+
| File               | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+--------------------+----------+--------------+------------------+
| mariadb-bin.000096 |      568 |              |                  |
+--------------------+----------+--------------+------------------+
--

启动从属服务器 Slave
数据导入以后,就可以启动复制功能了。 通过执行 " CHANGE MASTER TO" 来开始.
确保 " MASTER_LOG_FILE",以及 " MASTER_LOG_POS" 与master早时候记下的信息一致.
示例如下:
CHANGE MASTER TO
  MASTER_HOST='master.domain.com',
  MASTER_USER='replication_user',
  MASTER_PASSWORD='bigs3cret',
  MASTER_PORT=3306,
  MASTER_LOG_FILE='mariadb-bin.000096',
  MASTER_LOG_POS=568,
  MASTER_CONNECT_RETRY=10;
然后,启动slave
START SLAVE;
查看 slave状态:
SHOW SLAVE STATUS;

如果需要暂停 slave 复制,则可使用SQL :

stop slave;
说明: 假如停止 MYSQL(MariaDB),然后重新启动,则 Slave会随mysqld 自动启动.所以不需要担心日常的重启等操作.
[root@AY13 mysql]# service mysql stop
Shutting down MySQL. SUCCESS! 
[root@AY13 mysql]# service mysql start
Starting MySQL.. SUCCESS! 
更多问题,欢迎加入QQ群 《脚本娃娃-桃花岛》进行讨论,口令: Ext




<think>好的,我需要帮助用户找到MariaDB数据库主从复制配置的指南或教程。首先,我得回忆一下MariaDB主从复制的基本概念和步骤。主从复制通常涉及配置主服务器和从服务器,设置复制账户,获取二进制日志位置,然后在从服务器上启动复制进程。 根据用户提供的引用,特别是引用[2],MariaDBMySQL的一个分支,完全兼容MySQL,所以MySQL的配置方法可能适用于MariaDB。不过要注意存储引擎的差异,比如MariaDB使用XtraDB代替InnoDB,但配置复制时可能不会有太大影响,因为复制主要基于二进制日志。 接下来,我需要整理配置步骤。首先确保主从服务器的MariaDB版本兼容,最好保持一致。然后修改主服务器的配置文件,启用二进制日志,分配唯一的服务器ID。创建用于复制的用户,并授予权限。之后,锁定主数据库,获取当前的二进制日志位置,导出数据。接着配置从服务器,设置唯一的服务器ID,指定主服务器的信息,包括主机地址、用户名、密码、日志文件和位置。最后启动从服务器的复制线程,并检查复制状态。 用户可能需要具体的配置文件示例和SQL命令,所以应该提供具体的配置片段,比如my.cnf中的设置,以及CHANGE MASTER TO命令的参数。同时,注意提醒用户安全最佳实践,比如使用专用复制账户,限制访问权限,这可能参考了引用[3]中的安全建议。 还要考虑到常见问题,比如网络连接问题、服务器ID冲突、二进制日志配置错误等,需要给出检查点,如验证主从网络连通性,检查MariaDB错误日志,确认复制账户权限是否正确。 用户可能需要验证复制是否正常工作,所以需要说明如何在主服务器插入测试数据,然后在从服务器检查是否同步。此外,提到一些最佳实践,比如定期监控复制状态,备份配置,处理主从数据不一致的情况。 最后,生成相关问题时,要考虑用户可能的后续问题,比如如何监控复制延迟,如何处理主从数据不一致,或者如何配置主主复制等高级设置。确保问题覆盖用户可能感兴趣的扩展主题。</think>### MariaDB 主从复制配置指南 #### 一、主从复制原理 MariaDB主从复制通过二进制日志(Binary Log)实现数据同步。主库记录所有数据变更操作,从库通过读取主库的二进制日志进行重放,保持数据一致性[^2]。 #### 二、配置步骤 1. **环境准备** - 主从服务器安装相同版本的MariaDB(建议≥10.5) - 确保网络互通(3306端口开放) 2. **主库配置** ```bash # 修改配置文件 /etc/my.cnf [mysqld] server-id=1 log_bin=master-bin binlog_format=ROW innodb_flush_log_at_trx_commit=1 sync_binlog=1 ``` ```sql -- 创建复制账户 CREATE USER &#39;repl&#39;@&#39;%&#39; IDENTIFIED BY &#39;SecurePass123!&#39;; GRANT REPLICATION SLAVE ON *.* TO &#39;repl&#39;@&#39;%&#39;; FLUSH PRIVILEGES; -- 锁定表并获取日志位置 FLUSH TABLES WITH READ LOCK; SHOW MASTER STATUS; -- 记录File和Position值 ``` 3. **数据备份与传输** ```bash mysqldump -uroot -p --all-databases > master_db.sql scp master_db.sql user@slave:/path/ ``` 4. **从库配置** ```bash # 修改配置文件 /etc/my.cnf [mysqld] server-id=2 relay_log=slave-relay-bin read_only=1 ``` ```sql -- 导入数据 mysql -uroot -p < master_db.sql -- 设置主库信息 CHANGE MASTER TO MASTER_HOST=&#39;master_ip&#39;, MASTER_USER=&#39;repl&#39;, MASTER_PASSWORD=&#39;SecurePass123!&#39;, MASTER_LOG_FILE=&#39;master-bin.000001&#39;, MASTER_LOG_POS=328; -- 启动复制 START SLAVE; ``` #### 三、验证与监控 ```sql SHOW SLAVE STATUS\G -- 确认Slave_IO_Running和Slave_SQL_Running均为Yes -- 检查Seconds_Behind_Master是否为0 ``` #### 四、安全最佳实践 1. 使用SSL加密复制通道(参考引用[3]安全建议) 2. 定期监控复制延迟:`pt-heartbeat`工具 3. 设置自动故障转移:使用MariaDB MaxScale或ProxySQL #### 五、常见问题处理 - **复制中断**:通过`STOP SLAVE; SET GLOBAL SQL_SLAVE_SKIP_COUNTER=1; START SLAVE;`跳过错误 - **数据不一致**:使用`pt-table-checksum`进行校验 - **主库IP变更**:动态修改`CHANGE MASTER TO MASTER_HOST=&#39;new_ip&#39;`
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值