mysql不同版本數據之間的同步工具+常用指令 升級數據庫時,通常需要將舊版本中的數據同步到新版本的mysql服務中。對於MyISAM格式的,通常直接copy數據文件,然後修改文件權限(chown -R mysql:mysql data)就能解決問題。但是對於innodb格式的,這種方式是行不通的。於是我寫了一個工具方便數據的備份。 操作步驟如下: 1、啟動新的mysql服務 #:bin/mysqld_safe --port=3308 --socket=/tmp/mysql2.sock & 2、同步mysql服務權限【可選】 Java代碼 //同步權限數據 #:mysqldump --opt mysql | mysql -P 3308 --socket=/tmp/mysql2.sock mysql //在每一次的升級過程中,mysql_upgrade這個命令我們都應該去執行,它通過 //mysqlcheck命令幫我們去檢查表是否兼容新版本的數據庫同時作出修復, //還有個很重要的作用就是使用mysql_fix_privilege_tables命令去升級權限表。 #: mysql_upgrade -P 3308 --socket=/tmp/mysql2.sock 2、同步應用數據 Java代碼 TO_MYSQL_SOCK=/tmp/mysql2.sock TO_MYSQL_PORT=3308 dataList=`mysql -s -e "show databases"` for databaseName in ${dataList[*]} do # 過濾掉不需要同步的表 case $databaseName in Database|mysql|test|performance_schema|information_schema) echo "ignore Database:"$databaseName ;; *) echo "創建數據庫:"$databaseName mysqladmin -P ${TO_MYSQL_PORT} --socket=${TO_MYSQL_SOCK} create ${databaseName} mysqldump --opt ${databaseName} | mysql -P ${TO_MYSQL_PORT} --socket=${TO_MYSQL_SOCK} ${databaseName} ;; esac done 3、關掉舊數據庫服務,啟用新數據庫服務 常用指令: 授權: GRANT ALL PRIVILEGES ON *.* TO 'root'@'192.168.0.%' IDENTIFIED BY '1' WITH GRANT OPTION; 編碼集: SHOW VARIABLES LIKE 'character_set_%'; 二進制日志清除: mysql > flush logs; mysql > reset master; 刪除沒用的密碼 delete from user where password =""; FLUSH PRIVILEGES; 初設密碼: ./bin/mysqladmin -u root password 'new-password' ./bin/mysqladmin -u root -h server-171 password 'new-password' 5.6.10版本編譯(默認字符utf8) cmake -DCMAKE_INSTALL_PREFIX=/opt/app/mysql-5.6.10 \ -DMYSQL_DATADIR=/opt/app/mysql-5.6.10/data \ -DDEFAULT_CHARSET=utf8 \ -DDEFAULT_COLLATION=utf8_general_ci \ -DEXTRA_CHARSETS=all 慢查詢語句(my.cnf) long_query_time=1 log_slow_queries= /usr/local/mysql/var/slow_query.log 修改文件權限 chown -R mysql:mysql ${dbname}