在mysql中我们可以配置主从复制来备份我们的数据库。以防数据库的丢失。

mysql主从复制

环境说明

  • 主服务器: 阿里云( *.*.*.110
  • 从服务器: 腾讯云( *.*.*.190
  • 系统环境:centos7 mysql5.6
  • 在防火墙和安全组中分别开启3306端口

配置主服务器

登录主数据库,创建db数据库

mysql -u root -p
create DATABASE db;

然后编辑主数据库的my.ini文件

[mysqld]节点中增加如下内容:

#指定唯一的ID,1至32,必须的
server-id=1 
#指定二进制日志存放路径,必须的
log-bin=mysql-log-bin 
#指定要同步的数据库,必须的
binlog-do-db=db

主配置文件

添加远程登录账号

GRANT ALL PRIVILEGES ON *.* TO priess@'%' IDENTIFIED BY '12345678@';
flush privileges;

需要注意的是一定要在安全组和防火墙中开启3306端口,否则从服务器可能无法连接。

查看主服务器的状态信息,并且找到File 和 Position 的值记录下来

show master status;

记录这两个值,后面要用到。

配置从服务器

在从数据库中创建新的数据库db

然后编辑从数据库的my.ini文件

在[mysqld]节点中增加如下内容:

#指定唯一的ID,2至32,必须的,并且不能跟主数据库一样
server-id=2 
#指定要同步的数据库,必须的
replicate-do-db=db

设置登录主数据库的账号和密码等信息

change master to master_host='主ip',master_user='priess',master_password='12345678@', master_log_file='mysql-bin.000078',master_log_pos=120;
start slave;

参数说明:
host: 主服务器的IP地址
master_user: 上面配置的用于复制的账号
master_password: 账号密码
master_log_file: 填写show master status命令得到的值
master_log_pos: 同上

检测

在从数据库中执行

show slave status \G;

如果出现: Slave_IO_Running: YesSlave_SQL_Running: Yes以上两项都为Yes,那说明没问题了

验证

我么在主服务器数据库db中,创建表并插入数据!

mysql> INSERT INTO bbskali 
    -> (title, author, date)
    -> VALUES
    -> ( "kali论坛", "大表哥牛逼", NOW());


而此时,在从服务器中已同步更新!

填个坑

Slave_IO_Running 问题 一般是账号和File 和 Position的值发生了变动。
YesSlave_SQL_Running: 问题 检查两个数据库的表结构是否一致

Last modification:March 3rd, 2021 at 01:25 pm
正在沿街乞讨中……