mysql(mariadb)数据库的主从复制

本文详细介绍了MySQL数据库的主从复制配置流程,包括主库和从库的配置步骤,以及如何通过二进制日志(binlog)实现数据的一致性同步。适用于需要搭建高可用数据库集群的场景。

MySQL数据库的主从复制方案,是其自带的功能,并且主从复制并不是复制磁盘上的数据库文件,而是通过binlog日志复制到需要同步的从服务器上。

MySQL数据库支持单向、双向、链式级联,等不同业务场景的复制。在复制的过程中,一台服务器充当主服务器(Master),接收来自用户的内容更新,而一个或多个其他的服务器充当从服务器(slave),接收来自Master上binlog文件的日志内容,解析出SQL,重新更新到Slave,使得主从服务器数据达到一致。

主从机制实现原理

 

(1) master将改变记录到二进制日志(binary log)中(这些记录叫做二进制日志事件,binary log events);
(2) slave将master的binary log events拷贝到它的中继日志(relay log);
(3) slave重做中继日志中的事件,将改变反映它自己的数据。

master主库配置

 1 # 停止数据库
 2 systemctl stop mariadb
 3 
 4 # 修改配置文件
 5 vim /etc/my.cnf
 6 # 修改内容
 7 # 解释:server-id服务的唯一标识(主从之间都必须不同);log-bin启动二进制日志名称为log-bin 
 8   [mysqld]
 9   server-id=1
10   log-bin=log-bin
11 
12 # 启动mariadb
13 systemctl start mariadb
14 
15 # 创建从库账号
16 # 新建用于主从同步的用户user1,允许登录的从库是'192.168.168.133'
17 create user 'user1'@'192.168.168.133' identified by 'user1';
18 
19 #题外话:如果提示密码太简单,不复合策略在前面执行这句
20 set global validate_password_policy=0;
21 
22 # 给从库账号授权,说明给chaoge从库复制的权限,在192.168.178.133机器上复制
23 grant replication slave on *.* to 'user1'@'192.168.168.133';
24 
25 # 检查主库的状态
26 show master status;
27 +------------------+----------+--------------+------------------+
28 | File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
29 +------------------+----------+--------------+------------------+
30 | log-bin.000001 | 245 | | |
31 +------------------+----------+--------------+------------------+
32 1 row in set (0.00 sec)
33 
34 File是二进制日志文件名,Position 是日志开始的位置。后面从库会用到 后面从库会用到 后面从库会用到!!!!!!

slave从库配置

 1 # 设置server-id值并关闭binlog功能参数
 2 # 数据库的server-id在主从复制体系内是唯一的,Slave的server-id要与主库和其他从库不同,并且注释掉Slave的binlog参数。
 3 [mysqld]
 4 server-id=2
 5 read-only=true
 6 
 7 # 重启数据库
 8 systemctl restart mariadb
 9 
10 # 导入数据(注意sql文件的路径)
11 source /data/all.sql;
12 
13 # 配置复制的参数,Slave从库连接Master主库的配置
14 
15 change master to master_host='192.168.168.129',    # 主库的IP地址
16 master_user='user1',
17 master_password='user1',
18 master_log_file='log-bin.000001',
19 master_log_pos=245;
20 
21 # 启动从库的同步开关,测试主从复制的情况
22 start slave;
23 # 查看复制状态
24 show slave status\G;
25 # 如果看到下面两个参数,就说明运行成功了
26 Slave_IO_Running: Yes
27 Slave_SQL_Running: Yes

 

转载于:https://www.cnblogs.com/NoteBook3013/p/10840457.html

(1)普通用户端(全平台) 音乐播放核心体验: 个性化首页:基于 “听歌历史 + 收藏偏好” 展示 “推荐歌单(每日 30 首)、新歌速递、相似曲风推荐”,支持按 “场景(通勤 / 学习 / 运动)” 切换推荐维度。 播放页功能:支持 “无损音质切换、倍速播放(0.5x-2.0x)、定时关闭、歌词逐句滚动”,提供 “沉浸式全屏模式”(隐藏冗余控件,突出歌词与专辑封面)。 多端同步:自动同步 “播放进度、收藏列表、歌单” 至所有登录设备(如手机暂停后,电脑端打开可继续播放)。 音乐发现与管理: 智能搜索:支持 “歌曲名 / 歌手 / 歌词片段” 搜索,提供 “模糊匹配(如输入‘晴天’联想‘周杰伦 - 晴天’)、热门搜索词推荐”,结果按 “热度 / 匹配度” 排序。 歌单管理:创建 “公开 / 私有 / 加密” 歌单,支持 “批量添加歌曲、拖拽排序、一键分享到社交平台”,系统自动生成 “歌单封面(基于歌曲风格配色)”。 音乐分类浏览:按 “曲风(流行 / 摇滚 / 古典)、语言(国语 / 英语 / 日语)、年代(80 后经典 / 2023 新歌)” 分层浏览,每个分类页展示 “TOP50 榜单”。 社交互动功能: 动态广场:查看 “关注的用户 / 音乐人发布的动态(如‘分享新歌感受’)、好友正在听的歌曲”,支持 “点赞 / 评论 / 转发”,可直接点击动态中的歌曲播放。 听歌排行:个人页展示 “本周听歌 TOP10、累计听歌时长”,平台定期生成 “全球 / 好友榜”(如 “好友中你本周听歌时长排名第 3”)。 音乐圈:加入 “特定曲风圈子(如‘古典音乐爱好者’)”,参与 “话题讨论(如‘你心中最经典的钢琴曲’)、线上歌单共创”。 (2)音乐人端(创作者中心) 作品管理: 音乐上传:支持 “无损音频(FLAC/WAV)+ 歌词文件(LRC)+ 专辑封面” 上传,填写 “歌曲信息
<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 'repl'@'%' IDENTIFIED BY 'SecurePass123!'; GRANT REPLICATION SLAVE ON *.* TO 'repl'@'%'; 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='master_ip', MASTER_USER='repl', MASTER_PASSWORD='SecurePass123!', MASTER_LOG_FILE='master-bin.000001', 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='new_ip'`
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值