MySQL主从介绍(两台机器数据同步)
主:–>binlog
从:–>relaylog
主上有一个log dump线程,用来和从的I/O线程传递binlog从上有两个线程,其中I/O线程用来同步主的binlog并生成relaylog,另外一个SQL线程用来把relaylog里面的sql语句落地(执行)
主从的应用场景:(1)做数据的备份,(主:作读写数据,从:实时同步,当 主 宕机时,从 也可以即使提供服务 )(2)也是做备份。(客户从 从 这台机器上读取数据(但是不能再从上写),减轻主的压力)
准备工作1.两台机器都装上mysql,并且都开启mysql的服务
配置主主:192.1开发云主机域名683.136.133 从:192.168.136.134
1.修改my.cnf,增加server-id=133和log_bin=canshenglinux1
2.修改完配置文件后,启动或者重启mysqld服务
重启完后,我们可以发现在/data/mysql下生成了以在配置文件中定义log_bin=canshenglinux1为开头的文件这些文件很重要,不然不能实现主从
3.把mysql库备份并恢复成cansheng库,作为测试数据(这个库就是用来做主从)mysqldump -uroot -p123456 mysql > /tmp/mysql.sqlmysql -uroot -p123456 -e “create database cansheng”mysql -uroot -p123456 cansheng
4.创建用作同步数据的用户
(1)先进入到mysql(2)再创建同步数据的用户grant replication slave on *.* to ‘repl’@slave_ip identified by ‘123456’;
5.锁定一下表:flush tables with read lock;(为了同步前数据一致。)
show master status (查看一下position和file)(退出mysql)
此时查看一下/data/mysql又是什么库(一般同步不要同步mysql库,因为里面有很多用户名和密码)
6.备份一下所需要同步的库:mysqldump -uroot -p123456 zrlog > /tmp/zrlog.sql
配置从
1.查看my.cnf,配置server-id=134,要求和主不一样
2.修改完配置文件后,启动或者重启mysqld服务/etc/init.d/mysqld restart
3.把主上需要同步的库复制过来:scp 192.168.136.133:/tmp/*.sql /tmp/
临时创建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
6.进入mysql(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;
(3)start slave;
(4)判定主从是否配置成功
show slave statusG这样是表示不成功配置成功的要出现两个yes才成功。不成功的因素:(1)防火墙 systemctl stop firewalld
(2)selinux –>关闭 sentenforce 0(3)用户名是否正确
{而我的因素是在配置主的时候指定用户名和密码错误了,从头来了一次}
7.回到主,进到mysql解除table(表)的锁定unlock tables;至此完成主从配置:
测试主从同步(只需要在主或者从,其中一个配置就可以了。这些参数默认是没有配置的,没有手动配置,那默认是同步所有的库)在从上配置尽量使用最后两个,可以避免在忽略某个库或者表时,当级联查询的时候避免出现数据丢失,不该忽略的也忽略了!!
测试主从是否成功,是否同步!1.两台机器都进到mysql下,进到测试的数据库:cansheng2
此时清空主上的comment表;看看从上的comment表数据是否也清空,从而同步。truncate table comment;
删除表测试:
我们不能再 从 这台机器上执行mysql操作,不然这时我们的主从就断开。(因为此时我们的position已经改变)
如果此时我们的主从断开了,应该重新执行(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;
(3)start slave;
(4)判定主从是否配置成功
show slave statusG
这样是表示不成功配置成功的要出现两个yes才成功。
区别:1. InnoDB支持事务,MyISAM不支持,对于InnoDB每一条SQL语言都默认封装成事务,自动提交,这样会影响速度,所以最好把多条SQL语言放在begin和commit之间,组成一个事务;2. InnoDB支持外键,而MyISAM不支持。对一个包…
免责声明:本站发布的图片视频文字,以转载和分享为主,文章观点不代表本站立场,本站不承担相关法律责任;如果涉及侵权请联系邮箱:360163164@qq.com举报,并提供相关证据,经查实将立刻删除涉嫌侵权内容。