mysql主从复制方案_mysql主从复制-方案2

MySQL主从介绍

(两台机器数据同步)

9b351c25ff3bce502751b3713387a99d.png

主:-->binlog

从:-->relaylog

主上有一个log dump线程,用来和从的I/O线程传递binlog

从上有两个线程,其中I/O线程用来同步主的binlog并生成relaylog,另外一个SQL线程用来把relaylog里面的sql语句落地(执行)

28500f0ecb311218453b9d86938a8514.png

主从的应用场景:

(1)做数据的备份,(主:作读写数据,从:实时同步,当 主 宕机时,从 也可以即使提供服务 )

(2)也是做备份。(客户从 从 这台机器上读取数据(但是不能再从上写),减轻主的压力)

准备工作

1.两台机器都装上mysql,并且都开启mysql的服务

========================配置主========================

5e42dce88b1ed830ee8281a4a49543e7.png

主:192.1683.136.133      从:192.168.136.134

1.修改my.cnf,增加server-id=133和log_bin=canshenglinux1

log-bin=mysql-bimlog

binlog_format=mixed

server-id = 159

binlog-do-db = bim    #指定数据库

binlog-do-db = bam

binlog-do-db = apphub

837b45cfef9f47374d3bcd34995cb1e0.png

2.修改完配置文件后,启动或者重启mysqld服务

f414eeed36a099f23d0e031fd940017a.png

重启完后,我们可以发现在/data/mysql下生成了以在配置文件中定义log_bin=canshenglinux1为开头的文件

160d599fecaaf49e84fa56e03a0af2e5.png

这些文件很重要,不然不能实现主从

3.把mysql库备份并恢复成cansheng库,作为测试数据(这个库就是用来做主从)

mysqldump -uroot -p123456 mysql > /tmp/mysql.sql

mysql -uroot -p123456 -e “create database cansheng”

mysql -uroot -p123456 cansheng < /tmp/mysql.sql

4.创建用作同步数据的用户

(1)先进入到mysql

(2)再创建同步数据的用户------注意修改参数

grant replication slave on *.* to 'repl'@slave_ip identified by '123456';

e52a081c14d891c344015d7af8121074.png

5b65a560616e801c3f6be0e6dd054fd0.png

5.锁定一下表:

flush tables with read lock;

(为了同步前数据一致。)

show master status (查看一下position和file)

52dd01ab1e761cfe3689dbef3b1599cd.png

(退出mysql)

此时查看一下/data/mysql又是什么库

f4c58979b470d17775355ab6d992b7d8.png

(一般同步不要同步mysql库,因为里面有很多用户名和密码)

6.备份一下所需要同步的库:

mysqldump -uroot -p123456 zrlog > /tmp/zrlog.sql

ca85acd49bf821e0fc0fada3940fe215.png

===================配置从=======================

1.查看my.cnf,配置server-id=134,要求和主不一样

52802bbdbbe739e0eb6054d4547e5859.png

2.修改完配置文件后,启动或者重启mysqld服务

/etc/init.d/mysqld restart

3652feaf321ae7dd60f130418ac01701.png

3.把主上需要同步的库复制过来:

scp 192.168.136.133:/tmp/*.sql /tmp/

c3762818b8774e9350436269465c3572.png

临时创建alias,方便使用命令:

alias 'mysql=/usr/local/mysql/bin/mysql'

alias 'mysqldump=/usr/local/mysql/bin/mysqldump'

4.进入mysql

创建相对应的库:

create database cansheng;

create database zrlog;

create database mysql2;

5.数据恢复:

mysql -uroot cansheng < /tmp/mysql.sql

d1dcee1f6fe163c1846e1f51312cd988.png

6.进入mysql

(1)stop slave;

(2)change master to master_host='192.168.136.133', master_user='repl', master_password='123456', master_log_file='canshenglinux1.000002', master_log_pos=646207;

5ba60adcd902f2d13f73d5efeb590be3.png

703b5aea1b8e0c178d8dfede955a3df4.png

(3)start slave;

(4)判定主从是否配置成功

02e87953c6bc49c09ccaddcbc98123f8.png

show slave status\G

10285bafaaa846226ec0ff273b124701.png

这样是表示不成功配置成功的要出现两个yes才成功。

440a17fb779b02786946d43745a194cb.png

不成功的因素:

(1)防火墙 systemctl  stop firewalld

(2)selinux   -->关闭 sentenforce 0

(3)用户名是否正确

{而我的因素是在配置主的时候指定用户名和密码错误了,从头来了一次}

7.回到主,进到mysql解除table(表)的锁定

unlock tables;

51b718b0fcbdb86845fe27dad65649a1.png

至此完成主从配置:

===========测试主从同步=====================

5aa410a5e650fe6ad1b16106a960b4b5.png

(只需要在主或者从,其中一个配置就可以了。这些参数默认是没有配置的,没有手动配置,那默认是同步所有的库)

在从上配置尽量使用最后两个,可以避免在忽略某个库或者表时,当级联查询的时候避免出现数据丢失,不该忽略的也忽略了!!

测试主从是否成功,是否同步!

1.两台机器都进到mysql下,进到测试的数据库:cansheng2

da26756e4008a229efe15d66f752e856.png

48b0d3d89c1e3f158a9f182017e53147.png

此时清空主上的comment表;看看从上的comment表数据是否也清空,从而同步。

truncate table comment;

07cd1746a63c61e5ec7bdb05d42d32c8.png

6eb06e2acb669c5dbdb61c20988c6e47.png

删除表测试:

0c573b7e09ba8fefce9347c69fe0d4ae.png

21acffcebb85787cc7eab5ca5c629dc1.png

我们不能再 从 这台机器上执行mysql操作,不然这时我们的主从就断开。

(因为此时我们的position已经改变)

d1fe2f232a2e71d114ed3e02760dea78.png

如果此时我们的主从断开了,应该重新执行

(1)stop slave;

(2)change master to master_host='192.168.136.133', master_user='repl', master_password='123456', master_log_fil_log_file='canshenglinux1.000002', master_log_pos=646207;

5ba60adcd902f2d13f73d5efeb590be3.png

703b5aea1b8e0c178d8dfede955a3df4.png

(3)start slave;

(4)判定主从是否配置成功

show slave status\G

这样是表示不成功配置成功的要出现两个yes才成功。

440a17fb779b02786946d43745a194cb.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值