在项目部署上线的时候,除了bug的修复最重要的还是数据的安全,为了防止一些特殊情况的发生,我们会采用一些容灾备份的方案,在正常运行的情况下也需要对数据库进行备份, 相对于冷备份,热备份和热拷贝实时性是比较高的。有时候为了提供数据库的性能也会读写分离,实际方案也有很多种,比如master-slave备份机制, master-master 备份机制等等。
主从备份
-
准备工作
- 主机A : 39.96.56.70 (master)
- 主机B : 23.95.229.223 (slave)
-
说明
- 把主机A当成master机器, 主机B为salve机器,利用mysql自带的 REPLICATION完成热备份,那么当在主机A中有数据改变的时候会同步到主机B中,所以可以把主机A当成write database, 主机B为read database,可以针对操作不同比如选择指定的数据库引擎,还有可以选择相关的锁机制。
配置基本表:
分别在两台主机上安装mysql,并且指定ip开通远程连接,创建需要备份的数据库以及创建一张测试表
mysql> create database hotcopytest;
mysql> use hotcopytest;
mysql> create tables person(name varchar(20) comment'name');
复制代码
主机A配置
创建同步用户(user replicate)
mysql> grant replication slave on *.* to 'replicate'@'23.95.229.223' identified by '123456';
mysql> flush privileges;
复制代码
创建完之后,在slave中登录
ubuntu: mysql -h23.95.229.223 -ureplicate -p123456
复制代码
修改mysql 配置文件
Linux中mysql的配置文件在 /etc/mysql/my.cnf, 如果my.cnf中引了con.d文件夹的话可以在该文件夹下进行配置, 打开配置文件后在 [mysqld]下修改
server-id只要唯一自定义就可以
log_bin 可以自定义bin-log日志
max_bin_log_szie 为bin_log日志的容量
binlog_d0_db 需要备份的数据库
binlog_ignore_db 被忽略的数据库
配置完了之后重启主机A,查看数据库状态( 在生产环境下记得先锁表!!!)
主机B配置
同样修改配置文件并重启数据库
用change master 语句指定同步位置
mysql> change master to
mysql>master_host='23.95.229.223',master_user='replicate',master_password='123456',
mysql> master_log_file=' mysql-bin.000056 ',master_log_pos=154;
mysql> stop salve; # 重新设置salve, salve线程重启
mysql> reset slave;
mysql> start slave;
复制代码
查看slave服务器状态
查看到Salv_IO_Running = Yes
查看到Salv_SQL_Running = Yes
测试同步
在主机A中表插入数据, 主机B自动同步则成功了。