mysql管理维护常用的操作流程
设置记录通用日志 设置记录二进制日志 查看二进制日志 备份数据库 数据备份恢复 数据库迁移 导入导出 使用sql文件创建表 批量删除表
修改conf文件: general_log = 1 开启通用日志 log_output=FILE,TABLE 设置保存类型 general_log_file=/usr/local**/a.log #tabel的位置在myslq/mysql下(慢查询table也在这) 重启
修改conf文件: log_bin=1 开启 log_bin_basename=/usr/local/mysql/data/binlog log_bin_index=/usr/local/mysql/data/binlog.index log_bin_trust_function_creators=0 log_bin_use_v1_row_events=0 sql_log_bin=1 max_binlog_cache_size max_binlog_size max_binlog_stmt_cache_size 重启
./mysqlbinlog /usr/local/mysql/data/binlog.000020 >a.txt
mysqlbinlog binlog.[0-9]* | mysql -u root -p
./mysqlbinlog --stop-datetime='2019-12-01 12:10:40' /.../binlog.000020 |mysql -u root -p
./mysqlbinlog --start-datetime='...'--stop-datetime='2019-12-01 12:10:40' /.../binlog.000020 |mysql -u root -p
./mysqlbinlog /usr/local/mysql/data/binlog.000020 --stop-position=1835 |mysql -u root -p
time ./mysql -h 192.168.0.201 -P 20006 -uroot -pxx power< test.sql ./mysqldump -h 192.168.0.201 -P 20006 -uroot -p123456 --no-tablespaces --column-statistics=0 t1 > test5.sql time ./mysqlpump -h 192.168.0.201 -P 20006 -uroot -p123456 --default-parallelism=6 -B t1 > test55.sql
mysql -u root -p dbname < a.sql (‘root’:a.sql的用户) mysql -h 192.168.0.201 -P 20006 -uroot -pxx power< test.sql
>use t1; >source /.../a.sql;
chown -R mysqla.mysqla /…/dbname cp -R /…/daname /…/mysql/data
mysql> LOAD DATA LOCAL INFILE 'dump.txt' INTO TABLE mytbl;
恢复./mysqlpump -h xx -P xx -uroot -pxx --default-parallelism=6 -B t1 > test55.sql创建的时 ,必须创建同名数据库,或清空原有数据库,其内包含指定库名 恢复./mysqldump -h xx -P xx -uroot -pxx --no-tablespaces t1 > test5.sql创建的时 ,可指定任意库名,其内不包含指定库名
同版本数据库 复制数据库文件目录 (仅支持MyISAM类型)
mysqldump -h a.com -u root -p dbname | mysql -h b.com -u root -p
mysqldump -h a.com -u root -p --all-databases | mysql -h b.com -u root -p
先查看配置:>show variables like '%secure%'; secure_file_prive=null ––限制mysqld 不允许导入导出 secure_file_priv=/path/ – --限制mysqld的导入导出只能发生在默认的/path/目录下 secure_file_priv=’’ – --不对mysqld 的导入 导出做限制 secure_file_prive为只读变量,只能在my.cnf[mysqld]添加secure_file_prive=/xxxx路径。
>use test02; >select * from test02.testbak into OUTFILE ""aa.txt""; (默认无表头)"
格式 mysqldump -T path dbname tables [options] -u root -p mysqldump -T /test_sql test02 testbak -u root -p (默认无表头)
mysql -u root -p --execute="select * from table;" dbname > /test_sql/a.txt(有表头) mysql -u root -p --vertical --execute="select * from testbak;" test02 > /test_sql/a.txt mysql -u root -p --html --execute="select * from testbak;" test02 > /test_sql/a.html mysql -u root -p --xml --execute="select * from testbak;" test02 > /test_sql/a.xml
LOAD DATA INFILE 'file.txt' INTO TABLE db.table [options] [ignore number lines]; >LOAD DATA INFILE '/test_sql/a.txt' INTO TABLE test03.loadfile; #提前创建test.loadfile库表,并且表头符合a.txt,如果a.txt含表头,需删除表头
格式 mysqlimport -u root -p dbname file.txt [options] mysqlimport -u root -p test05 /test_sql/a.txt # 必须提前创建test05.a(table名称与file一致,table表头符合file.txt)
use db; source /…/xx.sql; #(source /var/log/mysql/a.sql;) 成功返回 :Query OK, 0 rows affected, show tables;查看表情况
先查询表名称,格式化输出 Select CONCAT( 'drop table ', table_name, ';' ) FROM information_schema.tables Where table_name LIKE '8%'; # 有重复项,会多删除。注意 再复制输出,运行