主从服务安装我们先略过了,网上的安装教程一大把,直接开始讲配置
主服务配置
[mysqld]
...server-id=1
#开启二进制日志
log-bin=mysql-bin
#中继日志的前缀名称
relay-log=mysql-relay-bin
#控制binlog的写入频率。每执行多少次事务写入一次
sync_binlog=1
#设置logbin格式
binlog_format=row
#二进制日志中忽略的数据库
binlog-ignore-db=mysql
binlog-ignore-db=information_schema
binlog-ignore-db=performance_schema
binlog-ignore-db=sys
#二进制日志记录的数据库
binlog-do-db=要同步的库名
登录主服务器客户端并且不要关闭该会话
mysql
创建slave复制用的用户
> CREATE USER 'slave'@'%' IDENTIFIED BY '密码';
> GRANT REPLICATION SLAVE ON *.* TO 'slave'@'%';
> use 要同步的库名;
设置为只读状态,并且不要关闭该会话,不然只读状态会取消
> FLUSH TABLES WITH READ LOCK;
查看master状态信息,下面的File和Position必须记录下来,是后面配置slave必须用到的参数
> show master status;
+------------------+----------+--------------+------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+----------+--------------+------------------+
| mysql-bin.000006 | 40428 | 要同步的库名 | mysql |
+------------------+----------+--------------+------------------+
从服务器配置
[mysqld]
...server-id=2
#开启二进制日志
log-bin=mysql-bin
#中继日志的前缀名称
relay-log=mysql-relay-bin
#控制binlog的写入频率。每执行多少次事务写入一次
sync_binlog=1
#设置logbin格式
binlog_format=row
#二进制日志中忽略的数据库
binlog-ignore-db=mysql
binlog-ignore-db=information_schema
binlog-ignore-db=performance_schema
binlog-ignore-db=sys
#设置普通账户处于只读模式
read_only=1
#在数据库内的系统表中存储主库的相关信息,而不是使用默认的文件形式
master_info_repository=TABLE
#在数据库内的系统表中存储中继日志的状态和信息,而不是使用默认的文件形式
relay_log_info_repository=TABLE
#遇到指定错误码时尝试跳过错误,继续执行后续的复制操作
slave-skip-errors=1032, 1062, 1007, 1007
#设定需要忽略的复制数据库
replicate-ignore-db=mysql
replicate-ignore-db=information_schema
replicate-ignore-db=performance_schema
replicate-ignore-db=sys
#设定需要复制的数据库
replicate-do-db=要同步的库名
接下来要完全拷贝master需要复制的数据库下所有内容到slave相应数据库下
主服务器执行
mysqldump -P3306 -uroot -p密码 --default-character-set=utf8mb4 --set-charset --databases 需要复制的数据库 > database.sql把上面备份的database.sql拷贝到从服务器从服务器执行
mysql
> CREATE DATABASE IF NOT EXISTS `要同步的库名`;
> use 要同步的库名;
> source 绝对路径/database.sql;
登录从服务器客户端
mysql
设置master信息,MASTER_LOG_FILE和MASTER_LOG_POS分别使用前面主服务器里读到的master状态信息的File和Position
> CHANGE MASTER TO MASTER_HOST='主服务ip',MASTER_USER='slave',MASTER_PASSWORD='密码',MASTER_PORT=3306,MASTER_LOG_FILE='mysql-bin.000006',MASTER_LOG_POS=40428;
启动slave复制进程
> start slave;
查看slave状态信息
> show slave status\G
再次回到主服务器客户端
解除只读状态
> UNLOCK TABLES;
完成!