mysql基于bin-log配置主从复制

一、mysql主库配置

1、修改/etc/my.cnf文件

[mysqld]
server-id=1
log_bin=master-log-bin
binlog-ignore-db=mysql
binlog-ignore-db=information_schema
binlog-ignore-db=performance_schema
binlog-ignore-db=test
innodb_flush_log_at_trx_commit=1
binlog_format=mixed

注意:

  • 此配置一定要在[mysqld]之下;
  • server-id与从库的server-id要不一致;
  • log_bin配置二进制日志文件;
  • binlog-ignore-db配置忽略系统数据库、测试库记录二进制日志;
  • innodb_flush_log_at_trx_commit=1,该模式是最安全的,但也是最慢的一种方式。在mysql服务崩溃或者服务器主机crash的情况下,binary log 只有可能丢失最多一个语句或者一个事务。
  • binlog_format配置二进制日志格式;

binlog_format三种格式

  • STATEMENT模式(SBR)
    每一条会修改数据的sql语句会记录到binlog中。优点是并不需要记录每一条sql语句和每一行的数据变化,减少了binlog日志量,节约IO,提高性能。缺点是在某些情况下会导致master-slave中的数据不一致(如uuid()函数, last_insert_id(),以及user-defined functions(udf)等会出现问题);
  • ROW模式(RBR)
    不记录每条sql语句的上下文信息,仅需记录哪条数据被修改了,修改成什么样了。而且不会出现某些特定情况下的存储过程、或function、或trigger的调用和触发无法被正确复制的问题。缺点是会产生大量的日志,尤其是alter table的时候会让日志暴涨。
  • MIXED模式(MBR)
    以上两种模式的混合使用,一般的复制使用STATEMENT模式保存binlog,对于STATEMENT模式无法复制的操作使用ROW模式保存binlog,MySQL会根据执行的SQL语句选择日志保存方式。(推荐使用)

修改完成后,重启数据库。

2、主库创建备份的账号并授权

  1. 创建备份账号
mysql> create user 'repl'@'%' identified by '123!@#';
  1. 授权
mysql> grant replication slave on *.* to 'repl'@'%';
mysql> flush privileges;

二、主从数据初始化同步

1、对主进行锁表

mysql> flush tables with read lock;

注意:
对主进行锁表的目的,是在初始化同步过程中防止主库数据变动。但是会导致,整个数据库表的阻塞导致数据库服务不可用。

2、记录log-bin的位置

mysql> show master status;

在这里插入图片描述

3、主数据库备份

mysqldump --all-databases --master-data > dbdump.db

将主数据库备份文件scp到从服务器

4、主数据库进行解锁

mysql> unlock tables;

4、主备份文件导入从数据库

mysql < dbdump.db -uroot -p

三、从数据库配置

1、修改/etc/my.cnf文件

[mysqld]
server-id=2
relay-log-index=slave-relay-bin.index
relay-log=slave-relay-bin
relay_log_recovery=1

修改完成后,重启数据库。

2、在从上设置主从配置

mysql> stop slave;
mysql> change master to 
       master_host='master IP',
       master_user='repl',
       master_password='123!@#',
       master_log_file='mariadb-logbin.000001',#主库show master status 显示的file文件
       master_log_pos=769;#主库show master status 显示的postion数字
 mysql> start slave;

至此,已完成mysql基于数据库二进制bin-log完成主从同步。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值