mysql 主从复制

主从复制安装

安装的mysql版本需一致

找到mysql配置文件my.cnf,需要修改的配置文件:

 

1)主从复制需修改或添加配置项如下:

log_bin:开启binlog日志

server_id:服务唯一标识

2)主主除以上配置外,需另加配置如下:

auto_increment_increment:主键步进值

auto_increment_offset:主键起始值

另,由于四台mysql之间的关系是主备的主从复制,为实现A主的从服务可以同步另一主的变化,需开启log-slave-updates配置项。从库开启log-bin参数,如果直接往从库写数据,是可以记录log-bin日志的,但是从库通过I0线程读取主库二进制日志文件,然后通过SQL线程写入的数据,是不会记录binlog日志的。也就是说从库从主库上复制的数据,是不写入从库的binlog日志的。所以从库做为其他从库的主库时需要在配置文件中添加log-slave-updates参数。

(master)配置如下:

[client]
socket=/tmp/mysql.sock

[mysqld]
#开启日志
log_bin
#开启slave更新日志
log-slave-updates

port = 3306
server_id = 1
#步进值auto_imcrement。一般有n台主MySQL就填n,双向主从复制需要
auto_increment_increment = 2
#起始值。一般填第n台主MySQL。此时为第一台主MySQL,双向主从复制需要
auto_increment_offset = 1
#忽略mysql库【我一般都不写】
binlog-ignore-db = mysql
#忽略information_schema库【我一般都不写】
binlog-ignore-db = information_schema
#要同步的数据库,默认所有库
#replicate-do-db = test1

# These are commonly set, remove the # and set as required.
basedir = /usr/local/mysql
datadir = /usr/local/mysql/data
user=mysql
max_allowed_packet=500M
wait_timeout=288000
interactive_timeout=288000
character-set-server = utf8
explicit_defaults_for_timestamp=true
socket=/tmp/mysql.sock
log-error = error.log
lower_case_table_names=1
max_connections=1000
max_connect_errors = 2000

sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES

(slave)配置如下:

[client]
socket=/tmp/mysql.sock

[mysqld]
#开启日志
log_bin

port = 3306
server_id = 12
#忽略mysql库【我一般都不写】
binlog-ignore-db = mysql
#忽略information_schema库【我一般都不写】
binlog-ignore-db = information_schema
#要同步的数据库,默认所有库
#replicate-do-db = test1

# These are commonly set, remove the # and set as required.
basedir = /usr/local/mysql
datadir = /usr/local/mysql/data
user=mysql
max_allowed_packet=500M
wait_timeout=288000
interactive_timeout=288000
character-set-server = utf8
explicit_defaults_for_timestamp=true
socket=/tmp/mysql.sock
log-error = error.log
lower_case_table_names=1
max_connections=1000
max_connect_errors = 2000

sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES

 

开启主从复制

在master端为从端创建同步数据所需的账号。

CREATE USER 'repl'@'10.3.98.%' IDENTIFIED BY 'mysql';
#为账户分配主端同步数据的权限

GRANT REPLICATION SLAVE ON *.* TO 'repl'@'10.3.98.%';
#查看主端binlog日志信息(name、position)
show master status;

在slave端(10.3.98.93)开启主从复制

 

#开启主从关系
mysql> CHANGE MASTER TO
    
-> MASTER_HOST='10.3.98.91',
    
-> MASTER_PORT=3306,
    
-> MASTER_USER='repl',
    
-> MASTER_PASSWORD='mysql',
    
-> MASTER_LOG_FILE='vm-linux-91-bin.000020',
    
-> MASTER_LOG_POS=14672;
#启动从服务
start slave;
#查看主从状态
show slave status\G

Slave_IO_Running 和 Slave_SQL_Running 都为yes时为正常。

主从复制验证

create database test;
use test;
create table temp(id int auto_increment,name varchar(10),primary key(id));
insert into temp (name) value(
'91'),('91'),('91');
select * from test.temp;

在从端查看是否有相同的数据。

当两个mysql都互为对方的从时,即为主主关系。

设置的slave错误时:

stop slave;

reset slave;  

reset slave all; 

删除slave后,重新设置即可。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值