在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: 问题 检查两个数据库的表结构是否一致
3 comments
学习了!
很详细!谢谢分享。😘