Linux命令.chm主服务器 10.10.1.100
从服务器 10.10.1.101
1、主从设置工作准备
100服务器
添加账户用于从服务器同步
GRANT REPLICATION SLAVE ON *.* TO 'backup'@'10.10.1.101' IDENTIFIED BY 'oppein123!';
锁定表只读
set GLOBAL read_only = false
主库导出库
mysqldump -uroot -p oppeincn>oppeincn.sql
mysqldump -uroot -p salespromotion>salespromotion.sql
101服务器
创建oppeincn,salespromotion数据库
把库导入从服务器数据库
mysql -uroot -p oppeincn<oppeincn.sql
mysql -uroot -p salespromotion<salespromotion.sql
====================================================================================================================================================================
关于备份
如果数据量很大的话,mysqldump会非常慢,此时直接拷贝数据文件能节省不少时间:
在拷贝之前要先锁定数据,然后再获得相关的日志信息(FILE & POSITION):
mysql> FLUSH TABLES WITH READ LOCK;
mysql> SHOW MASTER STATUS;
接下来拷贝数据文件时,如果是MyISAM表类型的话,直接拷贝即可;如果是InnoDB表类型的话,一定要先停止MySQL服务再拷贝,否则拷贝文件可能无法使用。把拷贝的数据文件直接复制到从服务器的数据目录。
====================================================================================================================================================================
2、 打开100服务器的my.cnf,输入
server-id = 1
log_bin = /var/log/mysql/mysql-bin.log
binlog-do-db =oppeincn #同步多个的时候可以写多行
server-id = 1
log_bin = /var/log/mysql/mysql-bin.log
binlog-do-db =oppeincn #同步多个的时候可以写多行
binlog-do-db =salespromotion
binlog-ignore-db =mysql
binlog-ignore-db =mysql
3、打开
101服务器
的my.cnf,输入
server-id = 2
replicate-do-db =oppeincn #同步多个的时候可以写多行
server-id = 2
replicate-do-db =oppeincn #同步多个的时候可以写多行
replicate-do-db =salespromotion
replicate-ignore-db=mysql
replicate-ignore-db=mysql
先重启100服务器的mysql,再重启101服务器的mysql
systemctl restart mariadb.service
或者
service mariadb restart
4、
查看100主服务器状态
show master status\G
101服务器 执行配置主从的sql
master_log_file,master_log_pos内容填写上面红圈内容
change master to master_host='10.10.1.100', master_user='backup', master_password='oppein123!',master_log_file='mysql-bin.000010',master_log_pos=73135900;
查看从服务器状态
show slave status\G
若两个都是YES就成功了
锁定
101服务器
的表只读
set GLOBAL read_only = false
=======================================================================
常见错误
Slave_SQL_Running: No
原因:
1.程序可能在slave上进行了写操作
2.也可能是slave机器重起后,事务回滚造成的.
解决办法一:
1.首先停掉Slave服务:slave stop
到主服务器上查看主机状态:
记录File和Position对应的值。
3.到slave服务器上执行手动同步:
1.程序可能在slave上进行了写操作
2.也可能是slave机器重起后,事务回滚造成的.
解决办法一:
1.首先停掉Slave服务:slave stop
到主服务器上查看主机状态:
记录File和Position对应的值。
3.到slave服务器上执行手动同步:
change master to master_host='10.10.1.100', master_user='backup', master_password='oppein123!',master_log_file='mysql-bin.000010',master_log_pos=73135900;
解决办法二:
slave stop;
set GLOBAL SQL_SLAVE_SKIP_COUNTER=1; #跳过错误操作
slave start;
set GLOBAL SQL_SLAVE_SKIP_COUNTER=1; #跳过错误操作
slave start;
主从服务器常用命令
关闭 从服务器 slave stop
开启 从服务器 slave start
关闭 主服务器 master stop
开启 主服务器 master start