*配置Replication**
准备两台mysql服务器,版本最好一致,防止版本不同带来的兼容性问题。
第一步:配置
主服务器配置文件:/etc/my.cnf 编辑该文件,添加如下:
[mysqld]
log-bin=/var/log/mysql/mysql-bin //生成bin文件路径自己指定
server-id=1 //随意设置数字,保证id是唯一的
日志目录:/var/log/mysql 创建:
mkdir -p /var/log/mysql
chown -R mysql.mysql /var/log/mysql //给目录授权,属主属组给mysql
从配置文件:/etc/my.cnf 添加server-id:
[mysqld]
server-id=2 //同上可随意设置,主要保证它是唯一的就好
重启服务
systemctl restart mysqld
从服务器需要一个主数据库存在的用户来登陆主数据库获取数据,所以我们在主数据库里创建一个用户:
1.mysql>CREATE USER ‘user_name‘@‘%‘
2.mysql>GRANT USER REPLICATION SLAVE ON *.* TO ‘user_name‘@‘%‘ identified by ‘123‘;
1//%所有主机 ,可以是IP、localhost(本机)
2//REPL..SLAVE-只读权限,all=所有权限,(库名).(表名)-代表所有 ,by ‘密码‘-需遵顼密码原则
简单在从服务器测试一下刚才创建的用户能否进入主数据库
[[email protected] ~]# mysql -uuser_name -p‘123‘ -h mysql-master1(主服务器IP)
第二步:主从数据保持一致
主数据库中是否存有数据,若存有,用mysqldump 导出数据,并导入从数据库
主:
[[email protected] ~]# mysqldump -uroot -p‘xx‘ -all >/mysql_bak/all.sql
scp /mysql_bak/all.sql 192.168.xx.xx:/root/
从:
[[email protected] ~]# mysqldump -uroot -p‘xx‘ </root/all.sql
最后一步:从数据库里配置链接
查看主服务器master详情信息用来配置从数据库
mysql> FLUSH TABLES WITH READ LOCK; --刷新所有表和阻止写入
mysql> show master status \G --查看主master的信息
****************** 1. row ****************
File: mysql-bin.000001 --得到起始bin文件名
Position: 0 --得到POS
Binlog_Do_DB:
Binlog_Ignore_DB:
Executed_Gtid_Set:
1 row in set (0.00 sec)
根据上面信息来从数据库里面配置:
mysql> CHEANGE MASTER TO
MASTER_HOST=‘192.168.10.130‘, --主服务器IP
MASTER_USER=‘user_name‘, --连接主服务器数据库的用户
MASTER_PASSWORD=‘123‘, --用户密码
MASTER_LOG_FILE=‘mysql-bin.000001‘, --起始bin文件名称
MASTER_LOG_POS=0;
完成后,启动从服务器的复制线程并检查--》启动:start slave 停止:stop slave
mysql> show slave start; --启动
Query OK, 0 rows affected (0.09 sec)
show slave status\G; --检查
长数据中找到:Slave_IO_Running: Yes
Slave_SQL_Running: Yes --yes代表完成主从配置,NO则需要根据报错排查问题
排错:IO/SQL常见错误分析
IO线程:IO是从服务器用了去主服务器上去查找bin文件的,取回bin文件暂存在一处
SQL线程:从服务器到暂存处读取bin文件并写入从数据库,达到主从数据同步
1、检查主/var/log/mysql 目录权限是否赋予给mysql
2、主/etc/my.cnf 配置里的log-bin文件生成位置是否有多条,注释掉其他,保留自己设置
3、主数据库上创建给从用来访问链接的用户,有权限问题
4、server-id 相同
具体问题具体分析,多根据报错定位问题,并解决。
原文地址:https://blog.51cto.com/14514572/2432299
时间: 2024-11-05 20:41:03