介绍:
随着互联网时代的发展数据对于一个企业来说越来越重要,各种安全策略进行备份,同步都应用而生,技术发展也逐渐走向成熟,虽然我们不能100%保证数据的安全,但是我们可以采用副本复制、备份的机制达到尽可能的让数据不丢失,将损失减少到最小,所以实时备份是非常有必要的。
一、MySQL数据库备份参数及命令说明
1、server-id 服务器id (主从必须不一样)
2、log-bin 存放服务执行过的sql语句,可以自定义
3、replicate-do-db 指定需要记录那个数据库,作为同步数据库
4、innodb_file_per_table 修改表空间模式,一张表生成一个文件,mysql默认一个data表空间,性能极差
5、log_bin_trust_function_creators 开启支持创建函数function 语句,否则遇到函数同步报错
6、innodb_flush_log_at_trx_commit 设置提交事务或其他指令将数据强行写入磁盘,如果为1表示每一次提交事务将执行sql强行写入,最多丢失一个事务的数据
7、sync_binlog 刷新事务写入的次数,将数据丢失降到最低,与innodb_flush_log_at_trx_commit 组合使用
8、innodb_support_xa 支持分布式事务,确保事务写入bin_log 日志文件
9、log_slave_updates 用于控制把所有的操作动作指令写入bin_log 日志文件
二、部署主从服务器指令代码
a、主库配置:X.X.X.159,配置mysql中my.ini
server-id=1
log-bin=mysql-bin
replicate-do-db=abc
*****重启主库服务*****
b、从库配置:X.X.X.137,配置mysql中my.ini
server-id=2
log-bin=mysql-bin
replicate-do-db=abc
relay-log-index=slave-relay-bin.index
relay-log=slave-relay-bin
innodb_flush_log_at_trx_commit=1
sync_binlog=1
innodb_support_xa=1
log_slave_updates=1
*****重启从库服务*****
c、配置命令同步数据,先查看主库服务上的日志文件状态,
mysql> show master status;
+------------------+----------+--------------+------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+----------+--------------+------------------+
| mysql-bin.000001 | 107 | | |
+------------------+----------+--------------+------------------+
d、在从库连接主库命令,启动从库数据同步主库数据
change master to master_host='X.X.X.159',master_user='root',master_password='ysl',
master_log_file='mysql-bin.000001',master_log_pos=107;
Query OK, 0 rows affected (2.55 sec)
启动从库服务
start slave;
查看命令是否连接成功,其中 Slave_IO_Running:Yes,Slave_SQL_Running:Yes 有表示连接成功
show slave status\G;
以上内容就是单一的主从数据搭建完毕,数据库会定是同步,如果断开系统每隔1分钟自动连接
e、然后在添加一台服务器,将上面的从库作为主库继续同步到当前新加入的这台服务器中,只需要在当前新服务器上mysql配置my.ini
******此处有两种情况***********
a、如果你以前的从服务器已经开启日志记录,那么就不需要关闭X.X.X.137的同步服务,不用执行 stop slave;
b、如果你没有配置开启二进制日志文件记录,就需要停止stop slave服务,然后备份数据,然后 将X.X.X.137服务器开启日志,重新导入数据,生成二进制日志文件
1、配置内容:X.X.X.129
server-id=3
log-bin=mysql-bin
replicate-do-db=abc
relay-log-index=slave-relay-bin.index
relay-log=slave-relay-bin
2、重新启动mysql服务
3、执行连接X.X.X.137的服务器同步配置命令
change master to master_host='X.X.X.137',master_user='root',master_password='123456',
master_log_file='mysql-bin.000001',master_log_pos=107
4、启动服务,同步数据
start slave;
5、查看是否已经同步数据,其中 Slave_IO_Running:Yes,Slave_SQL_Running:Yes 有表示连接成功
show slave status\G;