mysql 使用小技巧
一:备份数据库schemal
mysqldump --single-transaction -uymm -pEIvfqEJ5fNJhklnx -h10.2.6.31 --default-character-set=utf8 -B game_ymm -q -R -d --add-drop-table=true --add-drop-database=true >game_ymm.sql
二:备份单张表
mysqldump --single-transaction -udj2 -pdj2@2012 -h10.151.9.161 --default-character-set=utf8 db_dj2_game_10 game_common_items0 >/data/home/ieod/ijobs/d2_sql_tools/tmp/db_dj2_game_10.game_common_items0.sql
三:备份单个表的 schema
mysqldump --single-transaction -udj2 -pdj2@2012 -h10.151.9.162 --defau
lt-character-set=utf8 db_dj2_logdb_10 MilestoneFinished -q -R -d --add-drop-table=true --add-drop-database=true > ./MilestoneFinished.sql
四:备份单个用户数据
mysqldump --single-transaction -uyw -pyw --default-character-set=latin1 KOK_DB_5 CHARBASE --where=QQUIN='40077855' >40077855.sql
五:mysql 通过binlog恢复数据
mysqlbinglog –read-from-remote-server -u repl -p -h target_node –start-datetime=’2010-09-01 00:00:00′ –stop-datetime=’2010-09-01 23:59:59′
通过这条命令就可以获取到2010-09-01这一天的全部SQL,这些SQL可以直接导入到数据库,也可以写到Relaylog,让SLave SQL线程去执行。
六:mysql binlog
只查看第一个binlog文件的内容
show binlog events;
获取binlog文件列表
show binary logs;
mysqlbinlog工具
基于开始/结束时间
mysqlbinlog --start-datetime='2013-09-10 00:00:00' --stop-datetime='2013-09-10 01:01:01' -d 库名 二进制文件
基于pos值
mysqlbinlog --start-postion=107 --stop-position=1000 -d 库名 二进制文件
七:mysql 导出数据库指定表
mysqldump -uyz_user -pyz_user@123 --default-character-set=utf8 db_hk_inner_sys yz_editor -q -R --add-drop-table=true --add-drop-database=true > test.sql
八:添加字段 修改字段
alter table newexample add address varchar(110) after stu_id;
alter table sys_op_log add u_log_model varchar(30) after u_log_content
修改字段
alter table user modify column name varchar(50) ;
alter table sys_op_log modify column u_log_model varchar(100);
九:mysql 多级主从复制
#a->b->c
log-slave-updates=1
十:mysqlbinlog 解析MIXED 语句
mysqlbinlog --base64-output=DECODE-ROWS -v mysql-bin.000001
mysqlbinlog --base64-output=DECODE-ROWS -v --start-datetime="2016-09-27 00:00:00" --stop-datetime="2016-09-27 00:11:00" binlog.000532 binlog.000533 >/root/20160927_1.sql
十一:mysqldump
http://imysql.cn/2008_10_24_deep_into_mysqldump_options
在使用mysqldump备份的时候一定要加上 --single-transaction 参数, 用于保证数据的一致性,且在备份的时候不会锁表
十二:查询区分大小写
在sql里,使用Like 模糊查询时,想区分大小写(字母),加上binary关键字即可;
如:
SELECT COUNT(*) FROM DoctorUser WHERE IdentityCardType=1 AND BINARY IdentityCardNumber LIKE '%x';
十三:子查询
select (select count(1) from SC where CID = t.CID and score > t.score) from SC t;
相当于 SC 表里,再逐条扫描一次
mysql> select (select count(1) from SC where CID = t.CID and score > t.score) from SC t;
+-----------------------------------------------------------------+
| (select count(1) from SC where CID = t.CID and score > t.score) |
+-----------------------------------------------------------------+
| 0 |
| 0 |
| 0 |
等价于
select count(1) from SC where CID = 01 and score > 80;
+----------+
| count(1) |
+----------+
| 0 |
+----------+
select count(1) from SC where CID = 02 and score > 90;
+----------+
| count(1) |
+----------+
| 0 |
+----------+
select count(1) from SC where CID = 03 and score > 99;
+----------+
| count(1) |
+----------+
| 0 |
+----------+
十三:为了解决数据中心使用到的应用ID和老系统的应用ID冲突
ms.app表自增ID修改
ALTER TABLE ms.app AUTO_INCREMENT=600000;
十四:mysql 查询自增id的下一个值
-- 查询自增id的下一个值
SELECT
AUTO_INCREMENT
FROM
INFORMATION_SCHEMA. TABLES
WHERE
TABLE_NAME = '{table name}'