查看版本

select version();

show variables like ‘expire_logs_days’;
查看binlog过期时间,设置的时间为90天,这个值默认是0天,也就是说不自动清理,可以根据生产情况修改,本例修改为7天
my.cnf文件中
expire_logs_days=7

  1. log-slave-updates=true //log-slave-updates 意思是,中继日志执行之后,这些变化是否需要计入自己的binarylog。 当你的从服务器需要作为另外一个服务器的主服务器的时候需要打开。 就是双主互相备份,或者多主循环备份。 我们这里需要, 所以打开。

innodb_file_per_table 的简要说明
在很久很久以前也就是说还没有innodb_file_per_table 的那个年代,所有的innodb表的数据都是保存在innodb系统表空间中的,
  在有了innodb_file_per_table参数后innodb可以把每个表的数据单独保存。单独保存有两方面的优势一个是方便管理,二个是提长性能。

二、用一个例子直观的来感受一下innodb_file_per_table的作用:
  创建两个表 t 和t2,在创建t表时innodb_file_per_table=OFF,在创建t2表时innodb_file_per_table=ON,观察两种情况下文件系统
  生成文件的不同
  二.1 第一步建表:
Type ‘help;’ or ‘\h’ for help. Type ‘\c’ to clear the current input statement.

mysql> show databases;
+——————————+
| Database |
+——————————+
| information_schema |
| mysql |
| performance_schema |
| sys |
+——————————+
4 rows in set (0.00 sec)

mysql> create database tempdb; — 为了测试专门建一个库
Query OK, 1 row affected (0.00 sec)
mysql> use tempdb; — 进入库
Database changed
mysql> show global variables like ‘innodb_file_per_table’; — 察看当前设置
+———————————-+———-+
| Variable_name | Value |
+———————————-+———-+
| innodb_file_per_table | ON |
+———————————-+———-+

mysql> set @@global.innodb_file_per_table=off; — 关闭innodb_file_per_table
Query OK, 0 rows affected (0.00 sec)
mysql> create table t(x int , y int); — 创建表t
Query OK, 0 rows affected (0.00 sec)

mysql> set @@global.innodb_file_per_table=on; — 打开innodb_file_per_table
Query OK, 0 rows affected (0.00 sec)
mysql> create table t2(x int,y int); — 创建表t2
Query OK, 0 rows affected (0.01 sec)
  二.2 察看tempdb库中t,t2表所对应的文件:
[root@cstudio 5.7.19]# ll tempdb/
总用量 124
-rw-r——-. 1 mysql mysql 61 10月 7 09:57 db.opt
-rw-r——-. 1 mysql mysql 8578 10月 7 09:59 t2.frm
-rw-r——-. 1 mysql mysql 98304 10月 7 10:00 t2.ibd
-rw-r——-. 1 mysql mysql 8578 10月 7 09:59 t.frm

  由上面的内容可以看出t表少了一个ibd类型的文件,这个文件主要是用来保存innodb表中的数据的,所以对于t表来说数据就只
  保存在innodb系统表空间文件中了。

三、mysql 引用innodb_file_per_table是为了解决什么问题:
  在没有innodb_file_per_table之前所有的innodb表的数据都是统一保存到,innodb系统表空间文件中的,如果想让mysql的行为
  与innodb_file_per_table还没有引入时的行为一致,那么把innodb_file_per_table设置为OFF就行。

  1、由于数据都统一保存到innodb系统表空间文件中,在drop table ,truncate table后表空间文件并不会进行收缩,也就是说
  表空间文件所占的磁盘空间并不会因为drop table , truncate table 而释放。

  2、对于mysql来说alter table 的过程大概可以概括为 1)根据alter table 的指示创建出一张新的表 . 2)把老表的数据插入表新表中
  3)删了老表. 4)把新表的表名字重命名成老表的名字;当然如今的mysql已经有inplace对上面的过程进行优化了,不过并不是所有
  的alter table 都支持inplace,更多关于inplace的问题在此不表了。还是回到alter table 的第2)步 由这里可以看出系统表空间是
  要增大的(理由是:创建了新的表,又在向新的表中插入数据) 所以啊alter table 会导致系统表空间的进一步加大。

  3、在linux系统中不允许并行的对一个文件进行写入(innodb_flush_method=O_DIRECT的情况下是这样的),这可能成为一个性能
  问题

  4、对于使用innodb_file_per_table=ON的情况下,默认创建出来的ibd文件的格式是Barracuda,在这个文件格式下innodb数据行
  的格式就可以设置为compressed 或 dynamic 格式了。compressed 提供压缩功能节约空间,dynamic能优化对blob,text这样的
  数据类型的存储以提升性能。