MySQL 高可用:主从复制



# ps -ef | grep mysql
# ln -s /usr/local/mysql/mysql.sock /tmp/mysql.sock
# select Host,User,Password from mysql.user;


###########################################################################################

linux:	CentOS 5.6
mysql:	5.6.22
MASTER:	centos152(192.168.1.152)
SLAVE:	centos153(192.168.1.153)

###########################################################################################
#测试数据
# DROP TABLE IF EXISTS `userlog`;

CREATE TABLE `userlog` (
id int primary key auto_increment,  
  `username` varchar(50) NOT NULL default '0',
  `user_id` mediumint(8) NOT NULL default '0',
  `time` datetime NOT NULL default '0000-00-00 00:00:00',
  `result` tinyint(1) NOT NULL default '0',
  `ip` varchar(40) NOT NULL default '',
  KEY `username` (`username`),
  KEY `user_id` (`user_id`)
) auto_increment= 1 ENGINE=InnoDB DEFAULT CHARSET=utf8;

insert into `userlog` (`username`,`user_id`,`time`,`result`,`ip`)
values(default,default,default,default,default);

SELECT * FROM `userlog`;

###########################################################################################
#master 主服务器配置:
[root@centos152 ~]# vi /etc/my.cnf

[mysqld]
basedir =/usr/local/mysql
datadir =/usr/local/mysql/data
socket=/usr/local/mysql/mysql.sock
port = 3306
server_id = 1 #注意每台服务server_id都不同
log-bin= mysql-bin #主库启用二进制日志
#relay_log=mysql-relay-bin #重播日志不需要
binlog_format = row
read-only=0
binlog-ignore-db=mysql

###########################################################################################
#slave 备服务器配置:
[root@centos153 ~]# vi /etc/my.cnf

[mysqld]
basedir =/usr/local/mysql
datadir =/usr/local/mysql/data
socket=/usr/local/mysql/mysql.sock
port=3306
server_id=2
#log-bin= mysql-bin #二进制日志可不需要
relay_log=mysql-relay-bin #从库指定重播日志
binlog_format = row
read-only=1
binlog-ignore-db=mysql

###########################################################################################

mysql复制主要三种方式(binlog_format 二进制日志格式也有对应三种):
基于SQL语句的复制(statement-based replication, SBR)	: binlog_format = statement
基于行的复制(row-based replication, RBR)			: binlog_format = row
混合模式复制(mixed-based replication, MBR)			: binlog_format = mixed

###########################################################################################

#配置 my.cnf 后 master 和 slave 重启mysqld服务
[root@centos152 ~]# service mysqld restart

[root@centos153 ~]# service mysqld restart


#master:备份数据
[root@centos152 ~]# mysqldump -uroot -p --single-transaction --events --triggers --routines --flush-logs --master-data=2 --databases test > /tmp/test.sql


#master:备份远程传输到备用服务器153
[root@centos152 ~]# scp -r /tmp/test.sql root@192.168.1.153:/tmp 


#slave:备库还原
[root@centos153 ~]# mysql -u root -p test< /tmp/test.sql


#master:添加访问帐号(slave:备库也可添加)
mysql> grant replication slave on *.* to 'replication'@'192.168.1.%' identified by '123456';
mysql> flush privileges;


#master:查看当前日志位置
#mysql> show master status \G; 


#查看备份时的日志位置
[root@centos152 ~]# grep -i "change master" /tmp/test.sql
-- CHANGE MASTER TO MASTER_LOG_FILE='mysql-bin.000013', MASTER_LOG_POS=120;


#slave:备库连接主库
mysql> STOP SLAVE;
mysql>   
CHANGE MASTER TO   
	MASTER_HOST='192.168.1.152',   
	MASTER_USER='replication',   
	MASTER_PASSWORD='123456',   
	MASTER_LOG_FILE='mysql-bin.000013',   
	MASTER_LOG_POS=120;  
mysql> START SLAVE;

#slave:备库查看同步信息
mysql> show slave status \G; 


若看到:Slave_IO_Running 和 Slave_SQL_Running 为 Yes ,则表示两个同步线程正常运行中。



###########################################################################################

#slave:跳过一条事务
mysql> STOP SLAVE;
mysql> SET GLOBAL SQL_SLAVE_SKIP_COUNTER=1;
mysql> START SLAVE;


#slave:或者从下一个位置开始复制(跳过事务)
mysql> STOP SLAVE;
mysql>   
CHANGE MASTER TO   
	MASTER_HOST='192.168.1.152',   
	MASTER_USER='replication',   
	MASTER_PASSWORD='123456',   
	MASTER_LOG_FILE='mysql-bin.000013',   
	MASTER_LOG_POS=120;  
mysql> START SLAVE;

###########################################################################################


上次参考:  MySQL 主从配置或主主(双主)配置


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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值