·可以指定机器登录的密码,例如本地root账号空密码,GRANT ALL PRIVILEGES ON . TO 'root'@'localhost' IDENTIFIED BY '' WITH GRANT OPTION;GRANT ALL PRIVILEGES ON . TO 'root'@'127.0.0.1' IDENTIFIED BY '' WITH GRANT OPTION;flush privileges;不要忘了flush privileges。
·my.ini默认参数外的参数:mysqld\init-file 是在MySQL启动的时候加载的脚本; mysqld\innodb_file_per_table=1每表定义和数据单独存储; mysqld\innodb_buffer_pool_size Innodb表数据和索引的最大内存; query_cache_size是sql查询的缓存,在sql语句不同或数据有更新的情况下,缓存都会失效。default-storage-engine等
·MySQL Proxy,获取mysql执行sql和执行时间,可将结果导出文件。mysql-proxy.exe --proxy-address=127.0.0.1:3305 --proxy-backend-addresses=192.168.1.195:3306 --proxy-lua-script=share/doc/mysql-proxy/tutorial-query-time.lua>d:\temp\sql.log //--proxy-lua-script=share/doc/mysql-proxy/tutorial-query-time.lua //通过lua获取SQL执行时间
·如果直接kill mysql进程,可能导致mysql 数据损坏。所以在windows service模式中,用正常的服务停止sc.stop, exe模式下使用mysqladmin的shutdown。
·数据修复,内存不能为read,mysql启动失败,或error log中有类似Database page corruption on disk or a failed的描述。可尝试如下设置恢复,
innodb_force_recovery默认为0(系统正常启动不会启动强制恢复)。innodb_fore_recovery的非0取值范围是1到6,
更大的值实际功能作用包括小的值,比如3包括1,2的功能。取值为3以内的时候可以相对安全的导出表,只丢失部分损坏的表。
当innodb_force_recovery为6的时候,数据库可能会读取到过时的数据并装载到b-tree索引中
·mysql服务器断电也可能导致数据损坏,innodb_flush_log_at_trx_commit = 1是主要原因。建议设置innodb_flush_log_at_trx_commit=2,
innodb_flush_log_at_trx_commit = 0,
Innodb 中的Log Thread 每隔1 秒钟会将log buffer中的数据写入到文件,同时还会通知文件系统进行文件同步的flush 操作,保证数据确实已经写入到磁盘上面的物理文件。但是,每次事务的结束(commit 或者是rollback)并不会触发Log Thread 将log buffer 中的数据写入文件。
innodb_flush_log_at_trx_commit = 1,
这也是Innodb 的默认设置。我们每次事务的结束都会触发Log Thread 将log buffer 中的数据写入文件并通知文件系统同步文件。这个设置是最安全的设置,能够保证不论是MySQL Crash 还是OS Crash 或者是主机断电都不会丢失任何已经提交的数据。
innodb_flush_log_at_trx_commit = 2
当我们设置为2 的时候,Log Thread 会在我们每次事务结束的时候将数据写入事务日志,但是这里的写入仅仅是调用了文件系统的文件写入操作。而我们的文件系统都是有缓存机制的,所以Log Thread 的这个写入并不能保证内容真的已经写入到物理磁盘上面完成持久化的动作。文件系统什么时候会将缓存中的这个数据同步到物理磁盘文件Log Thread 就完全不知道了。这个只有在OS down掉的时候才会丢失数据。
·常用mysql命令,SHOW PROCESSLIST;SHOW VARIABLES;SHOW STATUS;