一、说明
目前应用中的mysql并没有采用双机热备的策略,但考虑到系统的高可用性,双机热备份是必要的,另外实现数据热备份后还可进一步实现读写分离,提高应用中访问数据的性能,何乐而不为呢,目前手上有几台空闲的机器,于是动手做起来。
机器A:(10.0.9.199),机器B:(10.0.9.1)
二、实现步骤
因为是双向热备份,首先设置A上的一个数据库(db1)为master,B上的备份数据库(db2)为slave,这是一个方向;然后配置db2为master,db1为slave
(1)修改 A和B上的 配置文件my.cnf,加入以下内容
log-bin=mysql-0-bin #设定生成log文件名 #机器A配置 server-id=9199 # 主ID,与从ID不能相同 binlog-do-db=webgps4_0 #设置同步数据库名 binlog-ignore-db=mysql #避免同步mysql用户配置 replicate-do-db=webgps4_0 // 两处webgps4_0是一致的 replicate-ignore-db=mysql
log-bin=mysql-1-bin #设定生成log文件名 #以下为机器B配置 server-id=9001 # 主ID,与从ID不能相同 binlog-do-db=webgps4_0 #设置同步数据库名 binlog-ignore-db=mysql #避免同步mysql用户配置 replicate-do-db=webgps4_0 // 两处webgps4_0是一致的 replicate-ignore-db=mysql
(2)重启A和B上的mysql,两台机器上分别创建一个mysql用户用来同步
CREATE USER 'test'@'10.0.9.1' IDENTIFIED BY '123456'; //test为账号,10.0.9.1表示账号只能从指定id也就是B机器访问,最后123456是密码,机器A上执行 CREATE USER 'test'@'10.0.9.199' IDENTIFIED BY '123456'; //机器B上执行
(3)设置用户权限
grant replication slave,reload,create user, super on *.* to 'test'@'10.0.9.1' IDENTIFIED BY '123456'; // 机器A上执行 grant replication slave,reload,create user, super on *.* to 'test'@'10.0.9.199' IDENTIFIED BY '123456'; // 机器B上执行
(4)设置A和B的主从联系,B和A的主从联系
mysql> change master to -> master_host = '10.0.9.1', -> master_port = 3306, -> master_user = 'test', -> master_password = '123456'; //机器A上执行,A为slave mysql> change master to -> master_host = '10.0.9.199', -> master_port = 3306, -> master_user = 'test', -> master_password = '123456'; //机器B上执行,B为slave
因为是双向备份,所以配置中很多操作是重复的,只是主从顺序不一致,一个正向一个反向。到这里已经实现了双向备份,现在可以在两个库中分别做一些操作看看效果。
目前只配置了db1以及其备份的双向主从,也就是仅保证了一个schema的热备,而实际应用中往往使用多个schema减轻单台服务器的压力,如本文中机器A的schema备份在B上,B的备份在C上,有些备份配置成一个环状。需要注意的是,当在机器B上配置热备时,配置master或者slave不能在之前的数据库实例中进行,同一个端口号上重复配置会将前一个覆盖,因此,需要利用mysqld_multi 单机启动多个mysql 实例,配置时在另一个mysql实例中完成。mysqld_multi的配置查看博文:MySQL之——Linux单机启动多个MySQL实例(mysqld_multi
)
三、双向备份说明
主库必须启用Bin log,主库和从库必须有唯一的Server Id
从库必须清楚了解从主库的哪一个Bin log文件的哪一个偏移位置起开始复制
从库可以从主库只复制指定的数据库,或者数据库的某些数据表
主库和从库的数据库名称可以不一样,不过还是推荐使用一样的名称
主库和从库的MySQL版本需保持一致
从MySQL3.23.15以后,MySQL支持单向的异步复制。也就是说,1台MySQL服务器充当Master(主库),1台或多台MySQL服务器充当Slaves(从库),数据从Master向Slaves进行异步复制。注意,这种复制是异步的,有别于MySQL的同步复制实现(这种实现称做MySQL集群,MySQL Cluster)。
当主库有更新的时候,主库会把更新操作的SQL写入二进制日志(Bin log),并维护一个二进制日志文件的索引,以便于日志文件轮回(Rotate)。在从库启动异步复制的时候,从库会开启两个I/O线程,其中一个线程连接主库,要求主库把二进制日志的变化部分传给从库,并把传回的日志写入本地磁盘。另一个线程则负责读取本地写入的二进制日志,并在本地执行,以反映出这种变化。较老的版本在复制的时候只启用一个I/O线程,实现这两部分的功能。
以上是MySQL之-双机双向热备份的示例代码的详细内容。更多信息请关注PHP中文网其他相关文章!

要优化MySQL慢查询,需使用slowquerylog和performance_schema:1.启用slowquerylog并设置阈值,记录慢查询;2.利用performance_schema分析查询执行细节,找出性能瓶颈并优化。

MySQL和SQL是开发者必备技能。1.MySQL是开源的关系型数据库管理系统,SQL是用于管理和操作数据库的标准语言。2.MySQL通过高效的数据存储和检索功能支持多种存储引擎,SQL通过简单语句完成复杂数据操作。3.使用示例包括基本查询和高级查询,如按条件过滤和排序。4.常见错误包括语法错误和性能问题,可通过检查SQL语句和使用EXPLAIN命令优化。5.性能优化技巧包括使用索引、避免全表扫描、优化JOIN操作和提升代码可读性。

MySQL异步主从复制通过binlog实现数据同步,提升读性能和高可用性。1)主服务器记录变更到binlog;2)从服务器通过I/O线程读取binlog;3)从服务器的SQL线程应用binlog同步数据。

MySQL是一个开源的关系型数据库管理系统。1)创建数据库和表:使用CREATEDATABASE和CREATETABLE命令。2)基本操作:INSERT、UPDATE、DELETE和SELECT。3)高级操作:JOIN、子查询和事务处理。4)调试技巧:检查语法、数据类型和权限。5)优化建议:使用索引、避免SELECT*和使用事务。

MySQL的安装和基本操作包括:1.下载并安装MySQL,设置根用户密码;2.使用SQL命令创建数据库和表,如CREATEDATABASE和CREATETABLE;3.执行CRUD操作,使用INSERT,SELECT,UPDATE,DELETE命令;4.创建索引和存储过程以优化性能和实现复杂逻辑。通过这些步骤,你可以从零开始构建和管理MySQL数据库。

InnoDBBufferPool通过将数据和索引页加载到内存中来提升MySQL数据库的性能。1)数据页加载到BufferPool中,减少磁盘I/O。2)脏页被标记并定期刷新到磁盘。3)LRU算法管理数据页淘汰。4)预读机制提前加载可能需要的数据页。

MySQL适合初学者使用,因为它安装简单、功能强大且易于管理数据。1.安装和配置简单,适用于多种操作系统。2.支持基本操作如创建数据库和表、插入、查询、更新和删除数据。3.提供高级功能如JOIN操作和子查询。4.可以通过索引、查询优化和分表分区来提升性能。5.支持备份、恢复和安全措施,确保数据的安全和一致性。

全表扫描在MySQL中可能比使用索引更快,具体情况包括:1)数据量较小时;2)查询返回大量数据时;3)索引列不具备高选择性时;4)复杂查询时。通过分析查询计划、优化索引、避免过度索引和定期维护表,可以在实际应用中做出最优选择。


热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

AI Hentai Generator
免费生成ai无尽的。

热门文章

热工具

SecLists
SecLists是最终安全测试人员的伙伴。它是一个包含各种类型列表的集合,这些列表在安全评估过程中经常使用,都在一个地方。SecLists通过方便地提供安全测试人员可能需要的所有列表,帮助提高安全测试的效率和生产力。列表类型包括用户名、密码、URL、模糊测试有效载荷、敏感数据模式、Web shell等等。测试人员只需将此存储库拉到新的测试机上,他就可以访问到所需的每种类型的列表。

记事本++7.3.1
好用且免费的代码编辑器

Dreamweaver CS6
视觉化网页开发工具

Atom编辑器mac版下载
最流行的的开源编辑器

SublimeText3汉化版
中文版,非常好用