操作規(guī)范
1、數(shù)據(jù)操作,必須謹(jǐn)慎,線上尤甚!??!
2、線上數(shù)據(jù)操作,必須備份!備份需完整、可用,備份使用自己最容易操作回滾的方式。
3、數(shù)據(jù)操作,能修改數(shù)據(jù)解決的決不刪除
4、不確定的操作不做,不確定的命令不敲
5、如果出現(xiàn)問(wèn)題,例如數(shù)據(jù)丟失、數(shù)據(jù)文件損壞,必須首先完整備份當(dāng)前環(huán)境,保證后續(xù)操作不會(huì)造成更大的影響,以便留給能解決問(wèn)題的人解決。
6、不允許移動(dòng)、修改、刪除 運(yùn)行中的數(shù)據(jù)庫(kù)的任意數(shù)據(jù)文件。
7、不允許刪除近期生成的、未備份的binlog
8、不允許在 OS 命令行 鍵入 密碼
常用命令
以下腳本在 linux命令行執(zhí)行
1、啟動(dòng) MySQL
/usr/local/mysql/bin/mysqld_safe --defaults-file=/etc/my.cnf --user=mysql &
參數(shù)解釋:
==--defaults-file #ff0000== 指定配置文件路徑
==--user #ff0000== 指定 MySQL server 進(jìn)程運(yùn)行用戶
2、關(guān)閉 MySQL
/usr/local/mysql/bin/mysqladmin -uroot -p -S /tmp/mysql.sock shutdown
參數(shù)解釋:
==-S #ff0000== sock文件地址
==shutdown #ff0000== 表示關(guān)閉數(shù)據(jù)庫(kù)
3、進(jìn)入 MySQL client
/usr/local/mysql/bin/mysql -uroot -p -h192.168.0.1 -P3306 -S /tmp/mysql.sock
參數(shù)解釋:
==-u #ff0000== 用戶名
==-p #ff0000== 密碼
==-h #ff0000== 地址
==-P #ff0000== 端口
4、導(dǎo)出 SQL 查詢的數(shù)據(jù)
/usr/local/mysql/bin/mysql -uroot -p -h192.168.0.1 -P3306 -S /tmp/mysql.sock -e "use db_name;select * from test1;"
參數(shù)解釋:
==-e #ff0000== 后面接SQL語(yǔ)句,必須放在最后一個(gè)參數(shù),并緊跟雙引號(hào)包裹的 SQL 語(yǔ)句。相當(dāng)于進(jìn)入 MySQL client 執(zhí)行該 SQL
5、數(shù)據(jù)備份
全庫(kù)備份(GTID 開(kāi)啟需使用全備)
mysqldump -uroot -p -S /tmp/mysql.sock --single-transaction --master-data=2 -R -E --triggers --opt -A > all_db.sql
導(dǎo)出指定數(shù)據(jù)庫(kù)
mysqldump -uroot -p -S /tmp/mysql.sock --single-transaction -B db_1 db_2 > db_1_2.sql
導(dǎo)出指定表
mysqldump -uroot -p -S /tmp/mysql.sock --single-transaction db_1 table_1 table_2 > table_1_2.sql
根據(jù) where 條件導(dǎo)出
mysqldump -uroot -p -S /tmp/mysql.sock --single-transaction --where="status=1" db_1 table_1 > table_1.sql
參數(shù)說(shuō)明:
==--single-transaction #ff0000== 以事務(wù)的方式導(dǎo)出,保證數(shù)據(jù)完整性
==--master-data=2 #ff0000== 導(dǎo)出當(dāng)前 binlog position
==-R #ff0000== 導(dǎo)出存儲(chǔ)過(guò)程 routines
==-E #ff0000== 導(dǎo)出事件 event
==--triggers #ff0000== 導(dǎo)出觸發(fā)器 triggers
==--opt #ff0000== 同--add-drop-table, --add-locks, --create-options,--quick, --extended-insert, --lock-tables, --set-charset, --disable-keys
==-B #ff0000== 指定需導(dǎo)出的數(shù)據(jù)庫(kù),多個(gè)使用逗號(hào)隔開(kāi)
==--where #ff0000== 導(dǎo)出條件,同 SQL 中的 where 子句
==--no-create-db #ff0000== 不打印 create database 語(yǔ)句
==--no-create-info #ff0000== 不打印 create table 語(yǔ)句
==--no-data #ff0000== 不導(dǎo)出 insert 語(yǔ)句,即不導(dǎo)出表內(nèi)數(shù)據(jù),用于只導(dǎo)出表結(jié)構(gòu)
常用 SQL
以下腳本在 MySQL 客戶端/命令行執(zhí)行
-- 查看數(shù)據(jù)庫(kù) show databases; -- 查看建庫(kù)語(yǔ)句 show create database db_name; 進(jìn)入數(shù)據(jù)庫(kù) use database -- 查看當(dāng)前進(jìn)入數(shù)據(jù)庫(kù)的所有表 show tables; -- 模糊匹配 show tables like '%%'; -- 查看指定數(shù)據(jù)庫(kù)的所有表 show tables from db_name; -- 查看建表語(yǔ)句 show create table table_name; -- 查看表結(jié)構(gòu) show columns from table_name; -- 修改表名 RENAME TABLE table_name TO new_table_name [, table_name2 TO new_table_name2] … ; -- 修改表存儲(chǔ)引擎 alter table table_name engine=innodb; -- 刪除表 DROP TABLE table_name; -- 添加列 ALTER TABLE table_name ADD column_1 VARCHAR(40); -- 刪除列 ALTER TABLE table_name DROP column_1; -- 修改列 ALTER TABLE table_name MODIFY column_1 VARCHAR(40) NOT NULL; -- 修改列名 ALTER TABLE table_name CHANGE birth_date date_of_birth DATE; -- 添加索引 ALTER TABLE table_name ADD INDEX idx_test(column_1,[column_2]...); -- 刪除索引 DROP INDEX idx_test ON table_name; -- 查看索引 show index from table_name; -- 添加外鍵約束 ALTER TABLE table_name ADD CONSTRAINT fk_name FOREIGN KEY(column_1) REFERENCES t2(column_1); -- 查詢前10 行數(shù)據(jù),limit 關(guān)鍵字必須放在 SQL 語(yǔ)句的最后 select * from test1 limit 10; -- 查看第 6-10 行數(shù)據(jù) select * from test1 limit 5,5; -- 按照 create_time 正序排序,asc 關(guān)鍵字默認(rèn)可不寫(xiě) select * from test1 order by create_time asc; -- 按照 create_time 倒序排序 select * from test1 order by create_time desc; -- 修改語(yǔ)句 UPDATE table_name SET column_1=23,column_2='JOE' WHERE ID=3; -- 刪除語(yǔ)句 DELETE FROM test1 WHERE ID=3;
權(quán)限管理
-- 創(chuàng)建用戶 create user user1@'192.168.1.1'; create user user1@'192.168.1.1' password expire interval 30 day; -- 授權(quán)、初始密碼 grant select,insert,delete,update,create on db_name.* to user1@'192.168.1.1' identified by 'password'; -- 修改密碼 alter user user1@'192.168.1.1' identified by 'password'; -- 修改用戶密碼過(guò)期時(shí)間 alter user user1@'192.168.1.1' password expire interval 30 day; -- 鎖定用戶 alter user user1@'192.168.1.1' ACCOUNT LOCK; -- 解鎖用戶 alter user user1@'192.168.1.1' ACCOUNT UNLOCK; -- 撤回權(quán)限 revoke update,create on db_name.* from user1@'192.168.1.1'; -- 刷新權(quán)限 (修改權(quán)限之后必須執(zhí)行) flush privileges; -- 查看權(quán)限 show grants for user1@'192.168.1.1';
管理命令
-- 查看全部連接 show full processlist; -- 查看 MGR 節(jié)點(diǎn)狀態(tài) select * from performance_schema.replication_group_members; -- 查看參數(shù) show [global|session] variables like '%buffer_pool%'; -- 修改參數(shù) (僅限于可以在線修改的參數(shù)) set [global|session] autocommit=1; -- 查看狀態(tài) show [global|session] status like '%Com_%'; -- 查看從庫(kù)狀態(tài) show slave statusG -- 啟動(dòng)從庫(kù)復(fù)制線程 start slave; -- 啟動(dòng)從庫(kù) IO 線程 start slave IO_THREAD; -- 啟動(dòng)從庫(kù) SQL 線程 start slave SQL_THREAD; -- 啟動(dòng)指定 channel 從庫(kù)線程 start slave for channel "moshi"; -- 停止從庫(kù)復(fù)制線程 stop slave -- 清除從庫(kù)配置:在從庫(kù)執(zhí)行,用于重建主從關(guān)系,不可恢復(fù),謹(jǐn)慎操作 reset slave all;