背景说明
- 单服务器资源有限,需要做读写分离或者双读,我们准备好服务器A,服务器B
一、服务器A配置
[mysqld]
log-bin=/var/log/mysql/mysql-bin
server-id=1
innodb_flush_log_at_trx_commit = 1
sync_binlog = 1
#A服务查看是否关闭这个
show variables like '%skip_networking%';
+-----------------+-------+
| Variable_name | Value |
+-----------------+-------+
| skip_networking | OFF |
+-----------------+-------+
1 row in set (0.00 sec)
#创建给B服务器复制数据的账号
CREATE USER 'repl'@'%'
GRANT REPLICATION SLAVE ON *.* TO 'repl'@'%' identified by
'QFedu123!';
在B服务器测试连接是否成功
mysql -urepl -p'QFedu123!' -hmysql-master1
二、备份A服务器数据库和传输到B服务器
#使用工具保存数据库
mysqldump -uroot -ppassword --dbname > dbname_test.db
#利用scp传文件
scp dbname_test.db root@123.123.21.12:/data
将备份文件导入服务器B
#登录
mysql -uroot -p
#选择数据库
use dbname_test;
#导入数据库
source /data/dbname_test.db;
三、配置B服务器
[mysqld]
server-id=2
#查询A服务器的日志到哪里了
show master status;
#B服务器设置从日志某个位置开始复制
CHANGE MASTER TO MASTER_LOG_FILE='mysql-bin.000002', MASTER_LOG_POS=643;
#配置连接账号
CHANGE MASTER TO MASTER_HOST='host', MASTER_USER='user', MASTER_PASSWORD='password', MASTER_LOG_FILE='mysql-bin.000002', MASTER_LOG_POS=643;
#B服务器开启复制
start slave;