MySQL杂记(不定期更新)

1.怎么查找MySQL undo file及MySQL redo 有无和Oracle类似概念需要开启归档?

在默认情况下,在InnoDB存储引擎的数据目录下会有二个名为ib_logfile0和ib_logfile1的文件,在MySQL官方手册
中将其称为InnoDB存储引擎的日志文件,不过更准确的定义应该是重做日志文件(redo log file),系统查找到的
redo log file如下:
[root@ mysql01 ~]# cd /var/lib/mysql/
[root@mysql01 mysql]# ls -l ib_logfile*
-rw-rw----. 1 mysql mysql 50331648 Sep 20 23:18 ib_logfile0
-rw-rw----. 1 mysql mysql 50331648 Aug 28 10:57 ib_logfile1
问题:
(1)、此重做日志文件是否有和 Oracle类似的概念需要开启归档?
没有,MySQL没有归档概念,又因redo log file是循环写的,以前写的redo log会被覆盖的,如没有归档,那么数据库出现崩溃或异常时怎么恢复?
(2)、MySQL undo file怎么查找?对应系统那个文件?
5.5之前系统表空间就是作为 undo 表空间一部分,ibdata中
5.6之后 undo 表空间从系统表空间中分离出,有相应的参数可指定
mysql> show variables like '%undo%';
通过将innodb_undo_logs选项设置为非零值并配置innodb_undo_tablespaces的值,来将回滚段移出共享表空间;
    1.innodb_undo_logs:定义在InnoDB引擎使用的系统表空间中,一个事务可以使用的回滚段的数量;
    2.innodb_undo_tablespaces:当innodb_undo_logs参数为非零值时,undo日志使用的表空间文件个数;默认情况下所有的重做日志都在系统表空间中;可以通过innodb_undo_directory参数来指定文件的目录;



2.MySQL如何使用DNS
from: http://blog.chinaunix.net/uid-9370128-id-1687475.html
涉及参数 --skip-name-resolve ,--skip-host-cache ,--skip-networking
当新的客户连接mysqld时,mysqld创建一个新的线程来处理请求。该线程先检查是否主机名在主机名缓存中。如果不在,线程试图解析主机名:

· 如果操作系统支持线程安全gethostbyaddr_r ()和gethostbyname_r()调用,线程使用它们来执行主机名解析。
· 如果操作系统不支持线程安全调用,线程锁定一个互斥体并调用gethostbyaddr()和gethostbyname()。在这种情况下,在第1个线程解锁互斥体前,没有其它线程可以解析不在主机名缓存中的主机名。
你可以用--skip-name-resolve选项启动mysqld来禁用DNS主机名查找。然而,在这种情况下,你只可以使用MySQL中的授权表中的IP号。
如果你有一个很慢的DNS和许多主机,你可以通过用--skip-name-resolve禁用DNS查找或增加HOST_CACHE_SIZE定义(默认值:128)并重新编译mysqld来提高性能。

你可以用--skip-host-cache选项启动服务器来禁用主机名缓存。要想清除主机名缓存,执行FLUSH HOSTS语句或执行mysqladmin flush-hosts命令。

如果你想要完全禁止TCP/IP连接,用--skip-networking选项启动mysqld。

附录.抓包数据 待补全

连接mysql时,都会向DNS做反向地址查询
只有等超时失败后,mysql才会响应客户端
等待解析的mysql进程都是 login状态


3.如果想要用GTID模式复制,且复制正常运行,gtid_mode必须在所有的服务器上都是ON或者都是OFF才行。
如果主库与从库GTID模式设置不同,会报错。
例如:[ERROR] Slave I/O: The slave IO thread stops because the master has GTID_MODE OFF and this server has GTID_MODE ON, Error_code: 1593
只有在所有的服务器中的gtid_mode具有相同的值时,复制才能正常运行。

可以让不同的服务器具有不同的复制模式(基于文件的模式,基于GTID的模式),但所有的服务器必须将将gtid_mode设置为ON。



4.可以在主从架构中,设置主从各节点的都默认为read only模式,当断电之后重启时,不会自动启动复制,避免了自动启动复制导致的数据不一致现象。然后再手动关闭主库的read only。(虽然启动整个集群的时间慢了写,操作多了一步,但总比重新搭建一个主从轻松多了,参考的是京东的处理方式。)

你可能感兴趣的:(MySQL杂记(不定期更新))