1、描述
防止数据库的误操作,必须进行数据库的备份,而binlog备份就是其中的一种。
2、开启bin-log
编辑mysql的配置文件
vi /etc/mysql/my.cnf
添加
server_id=2
log_bin = var/log/mysql/mysql-bin
重启mysql服务
systemctl restart mysqld
查看是否开启(登录mysql)
show variables like 'log_%'
log_bin 显示 On 成功,会在 /var/log/mysql 下面生成 mysql-bin.000001 这样的文件
3、出现问题
ERROR ~ :This function has none of DETERMINISTIC, NO SQL, or READS SQL DATA in its declaration and binary logging is enabled
(you *might* want to use the less safe log_bin_trust_function_creators variable)
(这个函数没有确定性,没有SQL,也没有读取SQL数据。)
- 原因
这是我们开启了bin-log, 我们就必须指定我们的函数是否是
1 DETERMINISTIC 不确定的
2 NO SQL 没有SQl语句,当然也不会修改数据
3 READS SQL DATA 只是读取数据,当然也不会修改数据
4 MODIFIES SQL DATA 要修改数据
5 CONTAINS SQL 包含了SQL语句
其中在function里面,只有 DETERMINISTIC, NO SQL 和 READS SQL DATA 被支持。如果我们开启了 bin-log, 我们就必须为我们的function指定一个参数。
mysql> show variables like 'log_bin_trust_function_creators';
+---------------------------------+-------+
| Variable_name | Value |
+---------------------------------+-------+
| log_bin_trust_function_creators | OFF |
+---------------------------------+-------+
mysql> set global log_bin_trust_function_creators=1;
mysql> show variables like 'log_bin_trust_function_creators';
+---------------------------------+-------+
| Variable_name | Value |
+---------------------------------+-------+
| log_bin_trust_function_creators | ON |
这样添加了参数以后,如果my记得在my.cnf配置文件中添加:
log_bin_trust_function_creators=1
eg、备份很重要,不要轻易操作数据库,那是在玩命啊