MySQL数据库性能优化(1):数据库主从同步

数据库主从复制是MyCat实现读写分离的基础,所以在实现MyCat读写分离前,先简要叙述MySQL数据库主从复制的配置方式。

数据库主从同步前提:

(1)准备两台服务器(主192.168.1.100,从192.168.1.200),分布安装并启动mysql服务;

(1)主从数据库服务器网络联通,能相互ping通;

(2)同步前主从数据库中数据要保持一致。

1、数据库Master设置

1.1、配置主机Master的my.cnf文件

log-bin=binlog #指定binlog日志文件名,默认datadir路径下
server-id=1 #数据库唯一ID,主从的server-id不能重复
binlog-do-db = evcg_node1 #要同步的数据库名。如果是多个同步库,就以此格式另写几行即可。如果不指明对某个具体库同步,就去掉此行,表示同步所有库(除了ignore忽略的库)
binlog-ignore-db=mysql #不同步mysql系统数据库。如果是多个不同步库,就以此格式另写几行;也可以在一行,中间逗号隔开
sync_binlog = 0 #确保binlog日志写入后与硬盘同步
binlog_format = mixed #bin-log日志文件格式,设置为MIXED可以防止主键重复
datadir=/mnt/data
socket=/tmp/mysql.sock

sync_binlog参数说明

sync_binlog这个参数是对于MySQL系统来说是至关重要的,他不仅影响到Binlog对MySQL所带来的性能损耗,而且还影响到MySQL中数据的完整性。对于sync_binlog参数的各种设置的说明如下:

sync_binlog=0,当事务提交之后,MySQL不做fsync之类的磁盘同步指令刷新binlog_cache中的信息到磁盘,而让Filesystem自行决定什么时候来做同步,或者cache满了之后才同步到磁盘。

sync_binlog=n,当每进行n次事务提交之后,MySQL将进行一次fsync之类的磁盘同步指令来将binlog_cache中的数据强制写入磁盘。

1.2、设置数据同步权限

[root@master ~]# mysql -uroot -pEVsaas2018
mysql> GRANT REPLICATION SLAVE ON *.* TO repli@'192.168.1.200' IDENTIFIED BY 'repli123456';
mysql> flush privileges;

1.3、主数据库Master状态

查看Master状态,File和Position作为从机执行同步指令的重要参数。

mysql> show master status;
+-------------------+------------+---------------------+------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+-------------------+------------+---------------------+------------------+
| binlog.000013 | 1794 | evcg_node1 | |
+-------------------+-------------+--------------------+-------------------+
1 row in set (0.00 sec)

2、数据库Slave设置

2.1、配置从机Slave的my.cnf文件

server-id=2 #设置从服务器id,必须于主服务器不同
replicate-do-db=evcg_node1 #需要同步的数据库名。如果不指明同步哪些库,就去掉这行,表示所有库的同步(除了ignore忽略的库)。
replicate-wild-do-table=evcg_node1.test #当只同步几个或少数表时,可以如是设置。注意这要跟上面的库指定配合使用
replicate-ignore-db=mysql #不同步mysql系统数据库
slave-skip-errors = all #跳过所有的错误错误,继续执行复制操作
#开启中继日志
relay-log=relay-log
relay-log-index=relay-log.index
innodb_file_per_table=ON
skip_name_resolve=ON

#如果需要同步的数据库名不同

扫描二维码关注公众号,回复: 12402191 查看本文章

replicate-rewrite-db=evcg_node1->evcg_node2 # master上的数据库名为evcg_node1,slave上的库名为evcg_node2

2.2、配置主从同步指令

[root@master ~]# mysql -urepli -prepli123456
mysql> stop slave; #停止slave同步
mysql> change master to master_host='192.168.1.100',master_user='repli',master_password='repli123456',master_log_file='binlog.000014',master_log_pos=107;
#master_log_file和master_log_pos通过主机上执行show master status;查看
mysql> start slave; #启动slave同步
mysql> show slave status\G

#查看show slave status\G显示Slave_IO_Running: Yes、Slave_SQL_Running: Yes表示设置成功,主从已实现同步

猜你喜欢

转载自blog.csdn.net/wangpf2011/article/details/101270256
今日推荐