5. 登陆从服务器的mysqlServer指定master数据库ip、slave用户密码、binlog文件号和位置号
6.错误处理1:
7.错误处理2:
1.配置主服务器
vim /etc/my.cnf (存放配置文件的地方每个人的不一样,可根据mysql --help | grep my.cnf 或者 find / -name my.cnf 查看)
配置三个参数:
server-id=1 # 本数据库的服务id
log-bin=master-bin #启用二进制日志;key值的名字固定,value表示你定义 的二进制文件的名字.可以自定义
log-bin-index=master-bin.index # 指定的是binlog文件的索引文件,这个文件管理了所有的binlog文件的目录
保存退出::wq
重新启动mysql(启动方法因你的服务器各异)
先service mysqld stop; 然后 service mysqld start
或者直接service mysqld restart
选配:
// 也可以配置需要同步的数据库和忽略的数据库(选填)
#不同步的数据库,可设置多个
binlog-ignore-db=information_schema
binlog-ignore-db=sys
binlog-ignore-db=mysql
#指定需要同步的数据库(和slave是相互匹配的),可以设置多个
binlog-do-db=test
注:不配置则默认所有数据库
2.配置从服务器
同样修改从服务器上数据库配置,添加server-id,不要和主服务器重复
server-id=2 # 本数据库的服务id
按照步骤一重启。
3.锁表备份主服务器数据并导入从服务器数据库
命令行登录主数据库 mysql -uroot -p
创建复制权限的用户
grant replication slave on . to slave@“%” identified by “slave”;
flush privileges;
数据库锁表,不让写数据; 生产环境中必须锁,测试环境无需锁
flush tables with read lock;
输入:show master status; #查看master的状,file是二进制文件,position记录当前操作sql的步骤数
记住这两个参数,保存起来,配置从节点服务时候需要使用。
show master status;
(注意不是sql的数量,因为一条sql包含了多个步骤,所以不是sql语句的条数)
导出已有数据:
mysqldump -uroot -p --all-databases > data20191029.sql
导出成功以后:在当前目录下可以看到这个data20191029.sql文件
将压缩文件上传至从服务器:
scp data20191029.sql root@192.168.11.24:/var/lib/mysql/
登录从服务器导入到当前数据库目录
登录mysqlServer,然后执行
source /var/lib/mysql/data20191029.sql;
4.备份完成后解锁表
输入unlock tables; 解锁表写操作,主数据库到此配置完毕
unlock tables;
5. 登陆从服务器的mysqlServer指定master数据库ip、slave用户密码、binlog文件号和位置号
change master to
master_host=‘192.168.11.20’,
master_port=3306,
master_user=‘slave’,
master_password=‘slave’,
master_log_file=‘master-bin.000001’,
master_log_pos=55390;
开启从节点服务状态;stop slave;停止服务,出错时先停止,再重新配置
start slave;
输入:show slave status \G; 查看从数据库状态(如果Slave_IO_Runing 和 Slave_SQL_Runing都是yes,则表示配置成功)
show slave status \G;
6.错误处理1:
因为我的从数据库是直接从主数据复制过来的镜像,所以show slave status \G;的时候Slave_IO_Runing参数为NO,报错代码是Fatal error: The slave I/O thread stops because master and slave have equal
查看服务器uid名称:
vim /var/lib/mysql/auto.cnf
结果如下:和主服务器上查看的一样
解决方法:
先停止从节点服务:
stop slave;
停止从库的mysqld服务,删除他的auto.cnf文件,再启动数据库服务即可。
service mysqld stop
mv /var/lib/mysql/auto.cnf /var/lib/mysql/auto.cnf.bak
service mysqld start
然后再开启从节点服务,即可解决。
start slave;
show slave status \G;
记录一次大坑:
这后面一定不要有空格,不然会报语法错误。查了我半天 才找出来原因
7.错误处理2: