MySQL之主从复制(四)

一、准备环境

1.两台linux服务器,Master主机IP地址为192.168.1.10;Slave从机IP地址为192168.1.11

2.mysql安装包

二、Master主机配置步骤

找到主服务器mysql的配置文件 windows(my.ini)、 linux(/etc/my.cnf),添加如下信息:

server-id=1
log_bin=master-bin
log_bin_index=master-bin.index
binlog_do_db=test

#server-id 服务器唯一标识。
#log_bin 启动MySQL二进制日志,即数据同步语句,从数据库会一条一条的执行这些语句。
#binlog_do_db 指定记录二进制日志的数据库,即需要复制的数据库名,如果复制多个数据库,重复设置这个选项即可。
#binlog_ignore_db 指定不记录二进制日志的数据库,即不需要复制的数据库名,如果有多个数据库,重复设置这个选项即可。
#binlog_do_db和binlog_ignore_db为互斥选项,只需要一个即可。

信息添加好之后,需要重启mysql服务器

2 在主服务器创建从服务器的用户,用于连接主服务器,需要登录mysql才可以执行如下命令:

CREATE USER 'loafer'@'%' IDENTIFIED BY 'pass';

grant all privileges on *.* to 'loafer'@'%';

3 重启mysql 查看主服务器状态

SHOW MASTER STATUS;

注意:File与Position对应的值非常重要,需要在从服务器配置的时候用到

三、Slave主机配置步骤

1 找到从服务器mysql的配置文件 windows(my.ini) 、linux(/etc/my.cnf),如果是多个从机,从机的配置都一样,只有server-id的值不一样。

server-id=2
relay-log-index=slave-relay-bin.index
relay-log=slave-relay-bin
#replicate-do-db=test

#server-id 服务器唯一标识,如果有多个从服务器,每个服务器的server-id不能重复,跟IP一样是唯一标识,
如果你没设置server-id或者设置为0,则从服务器不会连接到主服务器。
#relay-log 启动MySQL二进制日志,可以用来做数据备份和崩溃恢复,或主服务器挂掉了,将此从服务器作为其
他从服务器的主服务器。
#replicate-do-db 指定同步的数据库,如果复制多个数据库,重复设置这个选项即可。若在master端不指定
binlog-do-db,则在slave端可用replication-do-db来过滤。
#replicate-ignore-db 不需要同步的数据库,如果有多个数据库,重复设置这个选项即可。
#replicate-do-db和replicate-ignore-db为互斥选项,只需要一个即可

2 重启mysql,连接master主服务器

change master to master_host='192.168.1.10',master_port=3306,master_user='loafer',master_password='pass',master_log_file='master-bin.000003',master_log_pos=155;
#192.168.1.10 主服务器ip
#loafer 主服务器创建的用户
#pass创建用户的密码
#master-bin.000003  是主机show master status显示的File列的值
#155 是主机show master status显示的Position列的值

3 启动 slave数据同步

#启动slave数据同步
mysql> start slave;
  
#停止slave数据同步(若有需要)
mysql> stop slave;

4 查看 slave信息,Slave_IO_Running和Slave_SQL_Running都为yes,则表示同步成功

show slave status\G

重点事项

若在主从同步的过程中,出现其中一条语句同步失败报错了,则后面的语句也不能同步成功了。例如,主库有一条数据,而从库并没有这一条数据,然而,在主库执行了更新操作,那么从库没有这么一条数据,从而报错了。在此时的从数据库的数据同步就失败了,因此后面的同步语句就无法继续执行。

四、测试

我们在主机上创建一个test1的数据库,分别执行创建表和插入数据的操作,看看从机能不能把主机的数据同步过来。

CREATE TABLE `t_users` (
  `user_id` varchar(64) NOT NULL COMMENT '注册用户ID',
  `user_email` varchar(64) NOT NULL COMMENT '注册用户邮箱',
  `user_password` varchar(64) NOT NULL COMMENT '注册用户密码',
  `user_nikename` varchar(64) NOT NULL COMMENT '注册用户昵称',
  `user_creatime` datetime NOT NULL COMMENT '注册时间',
  `user_status` tinyint(1) NOT NULL COMMENT '验证状态  1:已验证  0:未验证',
  `user_deleteflag` tinyint(1) NOT NULL COMMENT '删除标记  1:已删除 0:未删除',
  PRIMARY KEY (`user_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

INSERT INTO t_users(user_id,user_email,user_password,user_nikename,user_creatime,user_status,user_deleteflag)
VALUES('1','19168@qq.com','123455','zhangsan',NOW(),1,0);

INSERT INTO t_users(user_id,user_email,user_password,user_nikename,user_creatime,user_status,user_deleteflag)
VALUES('2','888888@qq.com','123455','lisi',NOW(),1,0);

SELECT * FROM t_users;

直接打开从机,我们会发现从机的test1数据库、t_users表和两条记录都同步过来了

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值