'「Linux」MySQL 運維常用腳本'

MySQL SQL 腳本語言 Linux 數據庫 操作系統 BabySermonizer 2019-09-05
"

[toc]

操作規範

1、數據操作,必須謹慎,線上尤甚!!!

2、線上數據操作,必須備份!備份需完整、可用,備份使用自己最容易操作回滾的方式。

3、數據操作,能修改數據解決的決不刪除

4、不確定的操作不做,不確定的命令不敲

5、如果出現問題,例如數據丟失、數據文件損壞,必須首先完整備份當前環境,保證後續操作不會造成更大的影響,以便留給能解決問題的人解決。

6、不允許移動、修改、刪除 運行中的數據庫的任意數據文件。

7、不允許刪除近期生成的、未備份的binlog

8、不允許在 OS 命令行 鍵入 密碼

常用命令

以下腳本在 Linux命令行執行

1、啟動 MySQL

/usr/local/mysql/bin/mysqld_safe --defaults-file=/etc/my.cnf --user=mysql &

參數解釋:

==--defaults-file #ff0000== 指定配置文件路徑

==--user #ff0000== 指定 MySQL server 進程運行用戶

2、關閉 MySQL

/usr/local/mysql/bin/mysqladmin -uroot -p -S /tmp/mysql.sock shutdown

參數解釋:

==-S #ff0000== sock文件地址

==shutdown #ff0000== 表示關閉數據庫

3、進入 MySQL client

/usr/local/mysql/bin/mysql -uroot -p -h192.168.0.1 -P3306 -S /tmp/mysql.sock

參數解釋:

==-u #ff0000== 用戶名

==-p #ff0000== 密碼

==-h #ff0000== 地址

==-P #ff0000== 端口

4、導出 SQL 查詢的數據

/usr/local/mysql/bin/mysql -uroot -p -h192.168.0.1 -P3306 -S /tmp/mysql.sock -e "use db_name;select * from test1;"

參數解釋:

==-e #ff0000== 後面接SQL語句,必須放在最後一個參數,並緊跟雙引號包裹的 SQL 語句。相當於進入 MySQL client 執行該 SQL

5、數據備份

全庫備份(GTID 開啟需使用全備)

mysqldump -uroot -p -S /tmp/mysql.sock --single-transaction --master-data=2 -R -E --triggers --opt -A > all_db.sql

導出指定數據庫

mysqldump -uroot -p -S /tmp/mysql.sock --single-transaction -B db_1 db_2 > db_1_2.sql

導出指定表

mysqldump -uroot -p -S /tmp/mysql.sock --single-transaction db_1 table_1 table_2 > table_1_2.sql

根據 where 條件導出

mysqldump -uroot -p -S /tmp/mysql.sock --single-transaction --where="status=1" db_1 table_1 > table_1.sql

參數說明:

==--single-transaction #ff0000== 以事務的方式導出,保證數據完整性

==--master-data=2 #ff0000== 導出當前 binlog position

==-R #ff0000== 導出存儲過程 routines

==-E #ff0000== 導出事件 event

==--triggers #ff0000== 導出觸發器 triggers

==--opt #ff0000== 同--add-drop-table, --add-locks, --create-options,--quick, --extended-insert, --lock-tables, --set-charset, --disable-keys

==-B #ff0000== 指定需導出的數據庫,多個使用逗號隔開

==--where #ff0000== 導出條件,同 SQL 中的 where 子句

==--no-create-db #ff0000== 不打印 create database 語句

==--no-create-info #ff0000== 不打印 create table 語句

==--no-data #ff0000== 不導出 insert 語句,即不導出表內數據,用於只導出表結構

常用 SQL

以下腳本在 MySQL 客戶端/命令行執行

-- 查看數據庫
show databases;
-- 查看建庫語句
show create database db_name;
進入數據庫
use database
-- 查看當前進入數據庫的所有表
show tables;
-- 模糊匹配
show tables like '%%';
-- 查看指定數據庫的所有表
show tables from db_name;
-- 查看建表語句
show create table table_name;
-- 查看錶結構
show columns from table_name;
-- 修改表名
RENAME TABLE table_name TO new_table_name [, table_name2 TO new_table_name2] … ;
-- 修改表存儲引擎
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 行數據,limit 關鍵字必須放在 SQL 語句的最後
select * from test1 limit 10;
-- 查看第 6-10 行數據
select * from test1 limit 5,5;
-- 按照 create_time 正序排序,asc 關鍵字默認可不寫
select * from test1 order by create_time asc;
-- 按照 create_time 倒序排序
select * from test1 order by create_time desc;
-- 修改語句
UPDATE table_name SET column_1=23,column_2='JOE' WHERE ID=3;
-- 刪除語句
DELETE FROM test1 WHERE ID=3;

權限管理

-- 創建用戶
create user user1@'192.168.1.1';
create user user1@'192.168.1.1' password expire interval 30 day;
-- 授權、初始密碼
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';
-- 修改用戶密碼過期時間
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;
-- 撤回權限
revoke update,create on db_name.* from user1@'192.168.1.1';
-- 刷新權限 (修改權限之後必須執行)
flush privileges;
-- 查看權限
show grants for user1@'192.168.1.1';

管理命令

-- 查看全部連接
show full processlist;
-- 查看 MGR 節點狀態
select * from performance_schema.replication_group_members;
-- 查看參數
show [global|session] variables like '%buffer_pool%';
-- 修改參數 (僅限於可以在線修改的參數)
set [global|session] autocommit=1;
-- 查看狀態
show [global|session] status like '%Com_%';
-- 查看從庫狀態
show slave status\\G
-- 啟動從庫複製線程
start slave;
-- 啟動從庫 IO 線程
start slave IO_THREAD;
-- 啟動從庫 SQL 線程
start slave SQL_THREAD;
-- 啟動指定 channel 從庫線程
start slave for channel "moshi";
-- 停止從庫複製線程
stop slave
-- 清除從庫配置:在從庫執行,用於重建主從關係,不可恢復,謹慎操作
reset slave all;
"

相關推薦

推薦中...