Write the Code. Change the World.

8月 22

主服务器操作步骤

做主从复制最重要的一点就是双方的server-id不能相同;然而在主服务器上只需要三步:
1. 是改server-id
2. 启用二进制日志
3. 创建有复制权限的帐号

vim /etc/my.conf

# 修改下边两项, 保存退出
log-bin=/alidata/service/mariadb/binlogs/master-bin
server-id = 1

:wq

# 创建目录
mkdir /alidata/service/mariadb/binlogs

# 设置用户组(先查看用户组)
grep mysql /etc/group
groups mysql

chown -R mysql.mysql /alidata/service/mariadb/binlogs

重启 mysql ,设置权限


# 重启 mysql service mysqld restart # 进入 mysql,设置权限,生效 mysql -u root -p GRANT REPLICATION SLAVE,REPLICATION CLIENT ON *.* TO 'wangfang'@'xxx.xxx.xxx.105' IDENTIFIED BY '!Wfxxxxxxxxxx'; FLUSH PRIVILEGES;

再来配置从服务器配置。

从服务器操作步骤

编辑配置文件

vim /etc/my.conf

# 打开二进制文件 (从服务器可以不用打开)
# 二进制日志目录
log-bin=/tencent/service/mariadb/binlogs/master-bin
# 更改一个和主服务器不通的 id
server-id = 2
# 中继日志
relay-log =/tencent/service/mariadb/relaylogs/relay-bin 

:wq 保存退出

创建文件夹,并设置用户组

mkdir /tencent/service/mariadb/binlogs/

mkdir /tencent/service/mariadb/relaylogs/

chown -R mysql.mysql /tencent/service/mariadb/binlogs/

chown -R mysql.mysql /tencent/service/mariadb/relaylogs/

# 重启
service mysqld restart

登入 mysql 查看中继日志是否启动中

mysql -u xxxx -p 

# 查看中继日志是否启动
SHOW GLOBAL VARIABLES LIKE '%relay%';

# 出现 relay_log 项对应的文件就表示启动了。

配置从服务器连接主服务器相关

  • MASTER_HOST='xxxxxxx' --主服务器的IP地址
  • MASTER_USER='xxxx' --主服务器上授权复制的用户名
  • MASTER_PASSWORD='xxxx' --主服务器上授权用名的密码
  • MASTER_LOG_FILE='mysql-bin.000006' --主服务器上的日志文件
  • MASTER_LOG_POS=245 --主服务器上日志文件的位置
# 先在主服务器上查询
show master status;

+-------------------+----------+--------------+------------------+
| File              | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+-------------------+----------+--------------+------------------+
| master-bin.000001 |    93207 |              |                  |
+-------------------+----------+--------------+------------------+

这儿只需要看 File 和 Position,其它的两个分别是白名单和黑名单,意思为同步哪几个数据库和不同步哪几个数据库,可自行根据需求进行设置。记录了前两个字段后,在从库上执行以下语句。

# 从服务器上执行
CHANGE MASTER TO MASTER_HOST='xxxxxxx',MASTER_USER='xxxxxxx',MASTER_PASSWORD='xxxxxxx',MASTER_LOG_FILE='master-bin.000001',MASTER_LOG_POS=93207;

但是此时的从服务器还没有工作起来,要使从服务器工作起来还要手动启动复制线程,我们上面的步骤写得很明白。

# 从数据库
START SLAVE;

oo

从服务器还得自己建立数据库吗。

主服务器重启了,从服务器从新配置

主服务器操作

# 查看 File Position
show master status;

从服务器操作

stop slave

# 再执行 CHANGE

# 再 start
start slave

参考

https://www.cnblogs.com/xiaocen/p/3702945.html

https://www.cnblogs.com/gspsuccess/p/9182545.html?utm_source=debugrun&utm_medium=referral

https://blog.csdn.net/justlpf/article/details/82908740

http://blog.itpub.net/30221425/viewspace-2637246/