Linux宝塔Mysql读写分离配置,两台服务器,服务器存在多个库
一、主库操作
#登录数据库,用root登录方便,用其他账号会提示权限不足,需要登录root给予权限
mysql -u root -p
密码
#创建一个账号,供从库用该账号登录主库('%'不用改,改了从库会登录不上)
grant replication slave on *.* to 'database_slave'@'%' identified by 'databasepwd';
#这个命令可以查看到服务器所有的数据库账号密码,包括你新增的,正常操作的话,不用执行这个命令
select user,host from mysql.user;
#查看主库的状态,这里是为了看主库的日志文件及从文件哪行开始读
#图中的file、Position复制出来,配置从库会用到
show master status;
#如上图就对了,如果出现下图,说明你主库没有开log-bin日志
#查看日志开启状态
show variables like '%log_bin%';
#如果你也是宝塔,找到软件商店->MySQL->设置->配置修改,打开注释、或者添加
log-bin=mysql-bin #启用二进制日志
server-id=1 #这个server-id 也可能需要修改,要保证主库、从库server-id不同
#如果是宝塔,每次改完配置需要重启MySQL,重载配置文件没有用,重启后还执行show master status,应该就对了
二、从库操作
#登录数据库,用root登录方便,用其他账号会提示权限不足,需要登录root给予权限
mysql -u root -p
密码
#停止slave服务
stop slave;
#Slave设置参数,主库host,主库上面新增的账号、密码,主库log-bin文件名,从日志哪行开始复制
Change master to master_host='110.242.68.4',master_user='database_slave',master_password='databasepwd',master_log_file='mysql-bin.000002',master_log_pos=21568709;
#启动slave服务
start slave;
#Slave服务状态查看
#图中 Slave_IO_Running: Yes, Slave_SQL_Running: Yes,都为Yes才是正常了
show slave status\G
三、一些报错示例
1、登录不上主库
error connecting to master ‘database_slave@110.242.68.4:3306’ - retry-time: 60 retries: 1
(1)可能存在的问题,主库防火墙没关,关闭它
firewall-cmd --state
systemctl stop firewalld.service
(2)也可能是你在主库创建用户的时候,grant replication slave on . to ‘database_slave’@‘%’ identified by ‘databasepwd’;这里不是’%',也会登录不上,那就去主库从新添加用户
2、如果你是主库上存在多个库,你发现Last_SQL_Error:中出现了你不需要复制的库,去修改从库配置文件,在[mysqld]下面添加
#主从复制指定复制的主库库
replicate_do_db = supplier_cbecbas
#跳过所有错误 根据自身情况判断要不要开启
#slave-skip-errors=all
#跳过指定error no类型的错误 根据自身情况判断要不要开启
#slave-skip-errors=1062,1053,1146
3、每次改完配置记得重启MySQL,然后
stop slave; //停止从库复制
Change master to master_host=‘110.242.68.4’,master_user=‘database_slave’,master_password=‘databasepwd’,master_log_file=‘mysql-bin.000002’,master_log_pos=21568709;//如果你担心漏复制了一些sql,可以通过配置master_log_file、master_log_pos来更改复制的起始位置,重新执行一遍
start slave; //启动从库复制
show slave status\G //查看主从复制状态