show table status from testdb; show engines; --查询存储引擎类型
1、Maser主服务器
①my.ini增加配置:
#指定binlog的存储位置,日志格式为二进制
log-bin=/var/lib/mysql/data/binlog/mysql-bin
#[必须]服务器唯一ID,默认是1,多个mysql server,不重复即可
server-id=1
#每次执行写入就与硬盘同步 (如果不配置这个,会等到缓冲区满了自动刷盘, 安全和性能的权衡,配置为1是每次都会刷盘,自然慢一些,自己权衡)
sync-binlog=1
#需要同步的二进制数据库名 (有多个的话,配置多个binlog-do-db)
binlog-do-db=artisan
#只保留7天的二进制日志,以防磁盘被日志占满
expire-logs-days=7
#不备份的数据库(有多个的话,配置多个binlog-ignore-db)
binlog-ignore-db=information_schema
binlog-ignore-db=performation_schema
binlog-ignore-db=sys
#关闭名称解析(非必须)
skip-name-resolve
②创建主从复制用户
# @后面的IP段,建议仅对从服务的网段进行开放
CREATE USER 'artisan4syn'@'192.168.%.%' IDENTIFIED BY 'artisan';
grant replication slave,replication client on *.* to artisan4syn@'192.168.%.%' identified by 'artisan';
FLUSH PRIVILEGES;
③查看master节点binlog文件,Slave使用结果文件和位置开始同步
Show master status;
④备份Master数据同步到Slave服务器
2、Slave备份服务器
①my.ini增加配置:
#配置server-id,唯一ID号
server-id=2
#开启从服务器二进制日志 (从节点如果后面没有级联的从节点,binlog可以不打开,避免无谓的资源消耗)
#log_bin = /var/lib/mysql/data/binlog/mysql-bin
#[必须开启]打开Mysql中继日志,日志格式为二进制
relay_log = /var/lib/mysql/data/binlog/mysql-relay-bin
#如果salve库名称与master库名相同,使用本配置
replicate-do-db = artisan
#如果master库名[artisan]与salve库名[artisan01]不同,使用以下配置[需要做映射]
#replicate-rewrite-db = artisan[主库名] -> artisan01[从库名]
#如果不是要全部同步[默认全部同步],则指定需要同步的表
#replicate-wild-do-table=artisan01.t_order
#replicate-wild-do-table=artisan01.t_order_item
#设置只读权限
read_only = 1
#使得更新的数据写进二进制日志中
log_slave_updates = 1 (这个是不是应该为 on 待确认 , 给GTID用的? 5.7以下的版本 使用GTID必须要开启 )
②恢复数据
③根据Master节点的binlog文件,在Slave设置同步关系
#关闭线程
stop slave;
change master to master_host='192.168.18.131', master_user='artisan4syn', master_password='artisan', master_log_file='mysql-bin.000045', master_log_pos=1308;
#启动线程
start slave;
状态查询常用命令
Show slave status\G;
Show processlist \G;
binlog命令
# 查看是否开启binlog
mysql>show binary logs;
#查看binlog格式:
mysql>show variables like 'binlog_format';
#获取binlog文件列表:
mysql>show binary logs;
#查看当前正在写入的binlog文件:
mysql>show master status;
#查看master上的binlog:
mysql>show master logs;
#只查看第一个binlog文件的内容:
mysql>show binlog events;
#查看指定binlog文件的内容:
mysql>show binlog events in 'mysql-bin.000045';
#清空所有的bin-log:
mysql>reset master;
#生成一个新的binlog:
mysql>flush logs;
使用mysqlbinlog查看binlog文件
mysqlbinlog mysql-bin.000045
评论
