12月14日
17.1 MySQL主从介绍
MySQL主从介绍
· MySQL主从又叫做Replication,AB复制,简单讲就是A和B两台机器做主从后,在A上写数据,另外一台B机器也会跟着写数据,两者数据实时同步的
· MySQL主从是基于binlog的,主上须开启binlog才能进行主从。
· 主从过程大致有3个步骤
1)主将更改操作记录到binlog里
2)从将主的binlog的事件(sql语句)同步到本机上并记录在relaylog里
3)从根据relaylog里面的sql语句按顺序执行
· 主上有一个log dump线程,用来和从的I/O线程传递binlog
· 从上有两个线程,其中I/O线程用来同步主的binlog并生成relaylog,另外一个SQL线程用来把relaylog里面的sql语句落地。
应用场景
1, 数据备份
2,备份还可以在从上读数据减轻主的压力(不能写)
17.2 准备工作/17.3 配置主
主从配置-主上操作
· 安装mysql
· 修改mycnf,增加server-id=130和log_bin=ainglinux1
· /etc/init.d/mysqld restart 修改完配置文件后,启动或者重启mysqld服务
ls /data/mysql mysql目录下会生成几个文件。
划线那两个文件非常的重要。(以aminglinux1开头的文件)实现主从的根本
· 把mysql库备份并恢复成aming库,作为测试数据
· mysqldump -uroot -paminglinux blog > /tmp/mysql.sql 备份blog数据库
· mysql -uroot -paminglinux -e “create database aming” 创建个库
· mysql -uroot -painglinux aming < /tmp/mysql.sql 把数据库恢复回来
· 创建用作同步数据的用户
mysql -uroot -paminglinux 进入mysql里
grant replication slave on *.* to ‘repl’@192.168.133.132 identified by ‘password’; replication slave权限,*.* 所有库和表 repl用户 针对从的ip 最后是密码,
· fiush tables with read locak;先锁上,数据暂停
· show master status;需要记住file和posltion
mysqldump -uroot -paminglinux mysql2 > /tmp/my2.sql 给其他做个备份
17.4 配置从
主从配置-从上操作
· 安装mysql
· 查看my.cnf,配置server-id=131,要求和主不一样
· /etc/init.d/mysqld restart修改完配置文件后,启动或者重启mysql的服务
· 把主上aming库同步到从上
scp 192.168.133.130:/tmp/*.sql /tmp/
· 可以先创建aming库,然后把主上的/tmp/mysql.sql拷贝到从上,然后导入ainglinux库。
· mysql -uroot 进入mysql (找不到命令时需要做以下两个alias)
alias ‘mysql=/usr/local/mysql/bin/mysql’
alias ‘mysqldump=/usr/local/mysql/bin/mysqldump’
分别恢复四个数据库
create database aming;
create database zrlog;
create database blog;
Create database mysql2;
quit 退出mysql
mysql -uroot blog < /tmp/blog.sql
mysql -uroot mysql2 < /tmp/mysql2.sql
mysql -uroot zrlog < /tmp/zrlog.sql
mysql -uroot aming < /tmp/aming.sql 把这几个数据恢复
登录mysql
mysql -uroot
· stop slave;
· change master to master_host=’192.168.133.130’,master_user=‘repl’, master_password=‘aminglinux’, master_log_file=‘aminglinux1.000001’, master_log_pos=474566; 很关键的一步
· start slave;
· show slave status\G 查看是否配置成功,有两个yes
还要到主上执行
unlocak tables 恢复写操作
查看主从同步是否正常
· 从上执行mysql -uroot
· show slave stauts\G 看是否有
Slave_IO_Running:Yes
Slave_SQL_Running:Yes
还需关注
Secands_Behind_Master:0 为主从延迟的时间
Last_IO_Errno:0
Last_IO_Error:
Last_SQL_Errno:0
Last_SQL_Error:
17.5测试主从同步
几个配置参数
· 主服务器上
Binlog-do-db= 仅同步指定的库
Binlog-ignore-db= 忽略指定库
·从服务器上
replicate_do_db=
replicate_ignore_db=
replicate_do_table=
replicate_ignore_table= 不需要同步的表
replicate_wild_do_table= 如aming.%,支持通配符%
replicate_wild_ignore_table= (忽略某些库)
测试主从
·mysql -uroot aming 主上
· select count(*) wp-users; 主上查看表行数
truncate table wp-users; 清空wp-users(主)
· mysql -uroot aming 到从上
· select count(*) from wp-users;
· 主上继续drop table db;
· 从上查看db表
要是数据不一致,需要重新做。