linux mysql5.7配置主从同步

1、配置主服务器的数据库配置文件my.cnf

连接主数据库服务器,打开my.cnf

vim /etc/my.cnf

添加配置

[mysqld]

sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES 

server-id = 1

log-bin=mysql-bin

innodb_flush_log_at_trx_commit = 1

sync_binlog = 1

max_binlog_size = 500M

binlog-do-db = test

binlog-ignore-db = mysql

log-slave-updates

expire_logs_days = 1

binlog_format = 'MIXED'

2、配置从服务器的数据库配置文件my.cnf

连接从数据库服务器,打开my.cnf

[mysqld]

sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES 

server-id = 2

replicate-do-db = test

3、重启服务器上的主从数据库

/usr/local/mysql/support-files/mysql.server restart

4、主数据库授权同步账户

进入主库

#授权从服务器用户
grant replication slave on *.* to 'root'@'从库ip' identified by '123456';

#刷新权限
flush privileges;

#查看主库状态
show master status;
+------------------+----------+--------------+------------------+-------------------+
| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+------------------+----------+--------------+------------------+-------------------+
| mysql-bin.000007 |    18291 | yxw          | mysql            |                   |
+------------------+----------+--------------+------------------+-------------------+

5、配置从服务器数据库

CHANGE MASTER TO MASTER_HOST='主库ip',MASTER_USER='root', MASTER_PASSWORD='123456',MASTER_LOG_FILE='mysql-bin.000007',MASTER_LOG_POS=18291;

6、开启从库同步

#开启从库
start slave;

#查看从库状态
show slave status

7.撤销已经赋予给MySQL同步账户的权限

进入主库

revoke 跟 grant 的语法差不多,只需要把关键字 “to” 换成 “from” 即可:

GRANT REPLICATION SLAVE ON *.* TO 'root'@'从库ip' IDENTIFIED BY '123456';
REVOKE REPLICATION SLAVE ON *.* FROM 'root'@'从库ip';

参考:http://blog.csdn.net/qq_34754363/article/details/72853698

配置详解:

server-id :
服务器标志号,注意在配置文件中不能出现多个这样的标识,如果出现多个的话mysql以第一个为准,一组主从中此标识号不能重复。一般以ip地址最后一位

log-bin:
开启bin-log,并指定文件目录和文件名前缀。

innodb_flush_log_at_trx_commit = N:
如果innodb_flush_log_at_trx_commit设置为0,log buffer将每秒一次地写入log file中,并且log file的flush(刷到磁盘)操作同时进行.该模式下,在事务提交的时候,不会主动触发写入磁盘的操作。
如果innodb_flush_log_at_trx_commit设置为1,每次事务提交时MySQL都会把log buffer的数据写入log file,并且flush(刷到磁盘)中去.
如果innodb_flush_log_at_trx_commit设置为2,每次事务提交时MySQL都会把log buffer的数据写入log file.但是flush(刷到磁盘)操作并不会同时进行。该模式下,MySQL会每秒执行一次 flush(刷到磁盘)操作。
注意:
由于进程调度策略问题,这个“每秒执行一次 flush(刷到磁盘)操作”并不是保证100%的“每秒”。

sync_binlog = N:
N>0 每向二进制日志文件写入N条SQL或N个事务后,则把二进制日志文件的数据刷新到磁盘上;
N=0 不主动刷新二进制日志文件的数据到磁盘上,而是由操作系统决定;
当innodb_flush_log_at_trx_commit和sync_binlog 都为1时是最安全的,在mysqld 服务崩溃或者服务器主机crash的情况下,binary log 只有可能丢失最多一个语句或者一个事务。但是鱼与熊掌不可兼得,都为1会导致频繁的IO操作,因此该模式也是最慢的一种方式

max_binlog_size :
每个bin-log最大大小,当此大小等于500M时会自动生成一个新的日志文件。一条记录不会写在2个日志文件中,所以有时日志文件会超过此大小。

binlog-do-db:
需要同步的数据库名字,如果是多个,就以此格式在写一行即可。

binlog-ignore-db:
不需要同步的数据库名字,如果是多个,就以此格式在写一行即可

log-slave-updates:
当Slave从Master数据库读取日志时更新新写入日志中,如果只启动log-bin 而没有启动log-slave-updates则Slave只记录针对自己数据库操作的更新。

expire_logs_days =1:
设置bin-log日志文件保存的天数,此参数mysql5.0以下版本不支持

binlog_format = “MIXED”:
设置bin-log日志文件格式为:MIXED,可以防止主键重复。

replicate-do-db:
参数是在从数据库配置文件中配置,指定从数据库要复制主数据库的哪个库

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值