1、在主库建立一个账号,使得从库可以连接
判断标准:在从库使用mysql -ubackup -p*** -h 主库 ip 地址 -P3306,能够正常连接主库
grant replication slave on *.* to 'backup'@'%' identified by '***';
2、对于主库的最基本要求
1、开启binlog
2、设置server_id=1
3、binlog_format为row或者mixed模式
binlog_rows_query_log_events=on
log-bin=server
重启mysql,show variables like '%...%'; 确认修改生效
3、在主库做一个备份,最好使用xtrabackup,因为我们需要知道binlog恢复的起点
4、在从库安装一个和主库完全一致的mysql软件,不需要初始化从库,如果已经初始化,手工删除。
5、修改从库的配置文件
必须修改server_id=2和主库不一样
read_only=1(非all非*.*权限的用户,包含至高权限root@localhost)
binlog_format=row
binlog_rows_query_log_events=on
log-bin=slave
6、使用scp -r将主库的备份传递到从库
7、在从库上执行xtrabackup进行恢复,恢复完成以后,chown -R修改权限
[root@localhost mysql]# cat xtrabackup_info
binlog_pos = filename 'mysqlserver.000004', position '995'
8、chown+startup,启动从服务器
9、建立主从关系
mysql> Change master to master_host='192.168.10.10',master_port=3306,master_user='backup',master_passwo rd='123456',master_log_file='mysqlserver.000004',master_log_pos=995 master_connect_retry=10;
change master 的意思是:
1、主库在哪,使用哪个用户来连接
2、从哪个位置开始要binlog
10、在从库上开启从库:
mysql> Start slave后,从库会建立IO线程去连接主库,主库会启动binlog dump线程,负责读 binlog,把日志推送到从库的relay log里去。
Binlog dump线程是一个IO繁忙的线程,比较繁忙,是mysqldbinlog这个程序改过来的。
看是否io和sql线程都启动
从库执行Show processlist,会启动两个线程
IO线程接收主库的binlog,并写到relay log 里去,
sql线程,读取relay log,应用relay log
下面这两种状态说明从库非常闲:
State:waiting for master to sent event(等待主库发送事件)
State:slave has read all relay log;waiting for the slave I/O thread to update it
(从库已经读取所有的relay中继日志,正在等待从库IO线程拉取最新的日志来更新中继日志)。
12、在主库上执行show processlist
查看dump线程是否启动
13、从库show slave statusG
查看io和sql线程是否有错误:
Last_IO_Errno: 0
Last_IO_Error:
Last_SQL_Errno: 0
Last_SQL_Error:
14、主库上执行dml和ddl,确认从库是否会有数据同步过来