mysql高级用法(1)- mariadb的主从搭建
Mariadb介绍:
mariadb是mysql的一个分支,需要进一步了解的参考:https://mariadb.org/
安装参考教程:window版安装:Mariadb 介绍 1 (安装)
linux版安装 :centos7 yum安装mysql | mariaDb
补充: mysql的主从复制(master-slave),我就以mariadb来进行演示了
Mariadb主从复制:
1> 基本原理:
MySQL之间数据复制的基础是二进制日志文件(binary log file)。一台MySQL数据库一旦启用二进制日志后,其作为master,它的数据库中所有操作都会以“事件”的方式记录在二进制日志中,其他数据库作为slave通过一个I/O线程与主服务器保持通信,并监控master的二进制日志文件的变化,如果发现master二进制日志文件发生变化,则会把变化复制到自己的中继日志中,然后slave的一个SQL线程会把相关的“事件”执行到自己的数据库中,以此实现从数据库和主数据库的一致性,也就实现了主从复制。
2> 实现MySQL主从复制需要进行的配置:
1> 准备两台服务器
master 192.168.248,147 /linux (centos7)
slave 192.168.248.148 /linux (centos7)
centos7 安装mariadb后,默认无密码登录 1> mysql -uroot -p 回车 2> use mysql; 切换到mysql数据库 3> update user set password=password("自定义密码") where user='root'; 4> flush privileges; 刷新生效
2> 配置主服务器 (147 服务器)
1> 修改配置文件: [mysqld] log-bin=mysql-bin #开启二进制日志 server-id=1 #设置server-id
2> 重启mysql,创建用于同步的用户账号 mysql> CREATE USER 'huhy'@'192.168.248.147' IDENTIFIED BY 'huhy';#创建用户 mysql> GRANT REPLICATION SLAVE ON *.* TO 'huhy'@'192.168.248.147';#分配权限 mysql>flush privileges; #刷新权限 3> 查看master状态,记录二进制文件名(mysql-bin.000001)和位置(569): SHOW MASTER STATUS;
3>从服务器slave修改:
从服务器配置: 1>my.cnf配置文件,添加server-id [mysqld] server-id=2 #设置server-id,必须唯一
2>重启mysql,打开mysql会话,执行同步SQL语句(需要主服务器主机名,登陆凭据,二进制文件的名称和位置): CHANGE MASTER TO MASTER_HOST='192.168.248.147',MASTER_USER='huhy',MASTER_PASSWORD='huhy', MASTER_LOG_FILE='mysql-bin.000001',MASTER_LOG_POS=569;
3> 启动同步进程:
start slave; 【stop slave】
4> 查看slave状态:
show slave status\G;

注意:这个当其中两个都是yes的时候代码同步开启成功。
问题:这个可能会出现个问题, Slave_IO_Running: Connecting 连接问题: 如下:

产生这个问题的原因是我们创建的同步用户无法进行远程连接,从服务器无法连接到主服务器:
grant all privileges on *.* to huhy@'%'identified by 'huhy'; 授权后即可
flush privileges; 刷新权限
执行后即可完成同步
补充:可以再my.cnf中设置同步哪些数据库:
# 不同步哪些数据库 binlog-ignore-db = mysql # 只同步哪些数据库,除此之外,其他不同步 binlog-do-db = test
测试:
到这mysql的主从复制已经搞好了,有不理解的可以一起讨论
本文来自博客园,作者:huhy,转载请注明原文链接:https://www.cnblogs.com/huhongy/p/11206724.html
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义