您好,欢迎访问三七文档
当前位置:首页 > 办公文档 > 总结/报告 > 99MySQL主备双活安装说明
1/9MySQL主备双活安装说明一、MySQL主备工作原理MySQL主备集群模式采用日志回放的模式,将主服务器上执行过的日志信息,在备机上重新进行一次回放,确保主备服务器数据的一致性。简单而言就是把一个服务器上执行过的sql语句在别的服务器上也重复执行一遍,只要两个数据库的初态是一样的,那么它们就能一直同步。对于一个mysql服务器,一般有两个线程来负责复制和被复制。1.作为主服务器Master,会把自己的每一次改动都记录到二进制日志Binarylog中;2.作为从服务器Slave,会用master上的账号登陆到master上,读取master的Binarylog,写入到自己的中继日志Relaylog,然后自己的sql线程会负责读取这个中继日志,并执行一遍。2/9MySQL主备双活即主服务器负责写入读取,从服务器则只能进行读取操作。MySQL主主双活则在主备的基础上,采用互为备份的方式。二、MySQL双活配置2.1.环境说明两台服务器,IP地址分别为10.68.19.182(以下简称A机)、10.68.19.183(以下简称B机),操作系统Ubuntu14.04。2.2.MySQL安装在两台服务器上分别安装MySQL服务器。$sudoapt-getinstallmysql-server2.3.创建备份用户在A机上执行mysqlgrantreplicationslaveon*.*to'repl'@'10.68.19.183'identifiedby'replpwd';mysqlflushprivileges;在B机上执行mysqlgrantreplicationslaveon*.*to'repl'@'10.68.19.182'identifiedby'replpwd';mysqlflushprivileges;2.4.修改MySQL配置在A机上修改配置文件$sudovi/etc/mysql/my.cnf#bind-address=127.0.0.1server-id=101log_bin=/var/log/mysql/mysql-bin.logexpire_logs_days=10max_binlog_size=100M#binlog_do_db=include_database_namebinlog_ignore_db=mysqlbinlog_ignore_db=information_schema3/9binlog_ignore_db=performance_schemalog-slave-updatessync_binlog=0auto-increment-increment=2auto-increment-offset=1备注说明:1、bind-address注释掉或者修改为本地IP地址,否则外部机器无法连接到MySQL服务器;2、server-id为服务器的ID值,两台不同的MySQL服务器,必须配置成不同;3、binlog_do_db为需要同步的数据库,当前部署采用采用排除模式,不进行设置;4、binlog_ignore_db设定忽略哪些数据库的日志,当前的配置排除了系统自带的数据库;5、log-slave-updates这个参数用来配置从服务器的更新是否写入二进制日志,例如A-BB-A,在B中设置log_slave_updates后还可以B-C.这样A,C中的数据也是一致的,在主主互备的方式中,日志会自动过滤自己发送给其它服务器的日志;6、sync_binlog对应的数值为0或任意整形数据,如果大于0,当每个sync_binlog写入该二进制日志后,MySQL服务器将它的二进制日志同步到硬盘上(fdatasync())。请注意如果在autocommit模式,每执行一个语句向二进制日志写入一次,否则每个事务写入一次。默认值是0,不与硬盘同步。值为1是最安全的选择,因为崩溃时,你最多丢掉二进制日志中的一个语句/事务;7、auto-increment-increment、auto-increment-offset用于控制自增长主键生成策略,避免不同服务器之间产生的id发生冲突。auto-increment-increment用于设定自动增长字段的数值间隔,auto-increment-offset用于设定自动增长的偏移量(每台MySQL需配置不同值)。在本应用设置中,A机自动增长的数值为1、3、5…,B机自动增长的数值为2、4、6…。在B机上修改配置文件$sudovi/etc/mysql/my.cnf#bind-address=127.0.0.1server-id=102log_bin=/var/log/mysql/mysql-bin.logexpire_logs_days=10max_binlog_size=100M4/9#binlog_do_db=include_database_namebinlog_ignore_db=mysqlbinlog_ignore_db=information_schemabinlog_ignore_db=performance_schemalog-slave-updatessync_binlog=0auto-increment-increment=2auto-increment-offset=2分别在两台服务器上重启MySQL$sudo/etc/init.d/mysqlrestart或者$sudoservicemysqlrestart备注:注意启动提示,如未正常提示数据库启动成功,请查看服务器/var/log/mysql目录中的日志内容。2.5.同步数据库在A机上执行--创建数据库createdatabasetestdbdefaultcharsetutf8;--切换数据库usetestdb;--创建测试表createtableDM_TEST(IDINTAUTO_INCREMENTPRIMARYKEY,NAMEVARCHAR(100));--插入测试数据insertDM_TEST(NAME)values('user1');insertDM_TEST(NAME)values('user2');--将表设定为只读FLUSHTABLESWITHREADLOCK;--显示表日志情况showmasterstatus\G5/9--备份数据库mysqldump--master-data-uroot-ptestdbtestdb.sqlscptestdb.sql10.68.19.183:/home/whcyit在B机上执行--创建数据库createdatabasetestdbdefaultcharsetutf8;--恢复数据库mysql-uroot-ptestdb/home/whcyit/testdb.sql--设定初始日志changemastertomaster_host='10.68.19.182',master_user='repl',master_password='replpwd',master_log_file='mysql-bin.000001',master_log_pos=94382;--启动同步startslave;--锁定表FLUSHTABLESWITHREADLOCK;--显示表日志情况showmasterstatus\G在A机上执行--解除只读unlocktables;6/9--锁定表changemastertomaster_host='10.68.19.183',master_user='repl',master_password='replpwd',master_log_file='mysql-bin.000001',master_log_pos=107;--启动同步startslave;在B机上执行--解除只读unlocktables;分别在两台机器上执行以下命令查看从服务器状态mysqlshowslavestatus\G;确认Slave_IO_Running、Slave_SQL_Running为Yes状态。2.6.验证分别在两个数据库,分别插入数据,看另一数据库是否正常显示数据。停止一个数据库,操作另一数据库后,再次启动数据库,查看数据是否同步完成。三、MySQL常用配置项说明使用MySQL的命令showvariableslike'max_connections'、showstatuslike'max_connections'可以查询配置内容,修改配置需直接修改my.cnf文件。7/9参考配置:innodb_buffer_pool_size=4Ginnodb_log_file_size=1024Minnodb_log_buffer_size=8Minnodb_flush_log_at_trx_commit=2innodb_file_per_table=1innodb_file_io_threads=4innodb_flush_method=O_DIRECTinnodb_io_capacity=2000innodb_thread_concurrency=0innodb_additional_mem_pool_size=16Minnodb_autoinc_lock_mode=23.1.innodb_buffer_pool_size缓冲池是数据和索引缓存的地方:这个值越大越好,这能保证你在大多数的读取操作时使用的是内存而不是硬盘。典型的值是5-6GB(8GB内存),20-25GB(32GB内存),100-120GB(128GB内存)。3.2.innodb_log_file_sizeRedo日志的大小设置,redo日志被用于确保写操作快速而可靠并且在崩溃时恢复。设置较大的值,可以提高数据库性能(避免日志频繁切换),设置较小的值,可以使得来MySQL崩溃后能够更快恢复。。可以考虑将把innodb_log_file_size设置成512M(默认2个日志文件,这样有1GB的redo日志)会使你有充裕的写操作空间。如果应用程序需要频繁的写入数据并且你使用的时MySQL5.6,你可以一开始就设置为4G。3.3.max_connections最大用户连接数,默认值为151。设置过大的值(例如1000或更高)后,服务器运行1000个或更高的活动事务时会变的没有响应。8/93.4.innodb_thread_concurrency并发线程数,推荐设置为2*(NumCPUs+NumDisks),默认一般为8。3.5.innodb_file_per_table设置InnoDB是否需要将所有表的数据和索引存放在共享表空间里(innodb_file_per_table=OFF)或者为每张表的数据单独放在一个.ibd文件(innodb_file_per_table=ON)。每张表一个文件允许你在drop、truncate或者rebuild表时回收磁盘空间。这对于一些高级特性也是有必要的,比如数据压缩。但是它不会带来任何性能收益。你不想让每张表一个文件的主要场景是:有非常多的表(比如10k+)。MySQL5.6中,这个属性默认值是ON,因此大部分情况下你什么都不需要做。对于之前的版本你必需在加载数据之前将这个属性设置为ON,因为它只对新创建的表有影响。3.6.innodb_log_buffer_size该配置决定了为尚未执行的事务分配的缓存。其默认值(1MB)一般来说已经够用了,但是如果你的事务中包含有二进制对象或者大文本字段的话,这点缓存很快就会被填满并触发额外的I/O操作。3.7.query_cache_sizeQuerycache(查询缓存)是一个众所周知的瓶颈,甚至在并发并不多的时候也是如此。最佳选项是将其从一开始就停用,设置query_cache_size=0(现在MySQL5.6的默认值)并利用其他方法加速查询:优化索引、增加拷贝分散负载或者启用额外的缓存(比如memcache或redis)。9/93.8.log_bin日志文件存放路径,对于主备双活、主主双活
本文标题:99MySQL主备双活安装说明
链接地址:https://www.777doc.com/doc-4371354 .html