oracle数据库倒顺,mysql常用命令
mysql
文件系統(tǒng)管理數(shù)據(jù)存在的問題
1、數(shù)據(jù)冗余性和不一致性
2、數(shù)據(jù)訪問
3、數(shù)據(jù)相對獨立
4、完整性和原子性問題
5、并發(fā)訪問異常
6、安全性問題
數(shù)據(jù)庫:指的是以一定方式儲存在一起,能為多個用戶共享,具有盡可能小的冗余度的特點,是與應用程序彼此獨立的數(shù)據(jù)集合。
1、實現(xiàn)數(shù)據(jù)共享
2、減少數(shù)據(jù)的冗余度
3、數(shù)據(jù)實現(xiàn)集中控制
4、數(shù)據(jù)的一致性
5、故障恢復
關(guān)系式數(shù)據(jù)庫
DBMS 數(shù)據(jù)庫管理系統(tǒng)
軟件、管理數(shù)據(jù)庫
層次模型 ?網(wǎng)狀模型 ?關(guān)系模型
RDBMS 關(guān)系數(shù)據(jù)庫管理系統(tǒng) ?DBMS = RDBMS
E-R模型
ERM概念 實體關(guān)系建模
實體:實體就是指的數(shù)據(jù)對象
聯(lián)系:聯(lián)系代表一個或多個實體之間的聯(lián)系
屬性:實體的某一特性
超市: 超市名 ?超市地址
商品: 商品名稱 商品價格
員工: 性名 性別 編號
銷售: 商品 超市 銷售量
創(chuàng)建數(shù)據(jù)庫 ?修改數(shù)據(jù)庫
SQL語句 ?結(jié)構(gòu)化查詢語言
大型共享數(shù)據(jù)庫數(shù)據(jù)的關(guān)系模型
SQL發(fā)展歷史
System R ? DB2 ?SQL-SERVER ?T-SQL
ORACLE ?PL/SQL ? ? ANSI
SQL 分類
數(shù)據(jù)操作語言DML:用于操作數(shù)據(jù)庫對象中所包含的數(shù)據(jù)。
例如|:INSERT, ?UPDATE, ?DELETE語句。
數(shù)據(jù)定義語言DDL: 用于定義和管理數(shù)據(jù)對象,包括數(shù)據(jù)庫,數(shù)據(jù)表等。
例如:CREATE, ?DROP刪除 ?ALTER修改數(shù)據(jù)表等。
數(shù)據(jù)查詢語言DQL:用于查詢數(shù)據(jù)庫對象中所包含的數(shù)據(jù)。
例如: SELECT
數(shù)據(jù)控制語言DCL:是用來管理數(shù)據(jù)庫的語言,包括管理權(quán)限及數(shù)據(jù)更改。
例如: GRANT授權(quán) ?REVOKE刪除權(quán)限
關(guān)系結(jié)構(gòu)
文件系統(tǒng)的邏輯關(guān)系
上層:文件系統(tǒng)中的數(shù)據(jù),體現(xiàn)成文件的形式。
底層:數(shù)據(jù)存在硬盤的數(shù)據(jù)塊
中間層:文件系統(tǒng)
數(shù)據(jù)庫的邏輯關(guān)系
上層:數(shù)據(jù)表
底層:文件
中間層:能夠?qū)⑽募壿嫵杀淼慕M件,存儲引擎
存儲引擎
MyISAM 特點:最常見,查詢速度較快 ?缺點:不支持事務,行級鎖和外鍵約束功能
事務:一段SQL語句的批處理,具有原子性(要么全部SQL語句都執(zhí)行成功,要么全部SQL語句都執(zhí)行不成功)
鎖
行級鎖:InnoDB數(shù)據(jù)不能修改行級鎖定的數(shù)據(jù),其它的可以修改
表級鎖:MyISAM 直接鎖定整張表,要么都能修,要么都不能修改
頁級鎖:DBD 鎖定一張表格的相鄰的幾組數(shù)據(jù)
約束:
域約束:某個單元格填寫某種類型的數(shù)據(jù)
外建約束:約束數(shù)據(jù)正確性
InnoDB
Memory基本內(nèi)存的引擎,速度快 缺點:不能永遠保存數(shù)據(jù)
數(shù)據(jù)庫
1、只支持一種存儲引擎 ORACLE
2、支持多種存儲引擎 ?MYSQL
數(shù)據(jù)庫結(jié)構(gòu)分為兩大類
存儲管理器
權(quán)限及完整性管理器
事務管理器
文件管理器
緩沖區(qū)管理器
查詢管理器
DDL DML
查詢執(zhí)行引擎
數(shù)據(jù)庫工作模式
單進程多線程模式
守護線程
應用線程
優(yōu)化數(shù)據(jù)庫性能
緩存
線程重用
硬件
SMP 對稱多處理器結(jié)構(gòu)
MYSQL 版本
社區(qū)版 企業(yè)版 集群版
[root@localhost ~]# mysql -u root -p123456 -h localhost -P 3306 ? ?#登陸mysql
mysql>create user you2@'localhost' identified by '123'; ?#設置普通本地用戶 you 123456
mysql>create user you@’%’ identified by ‘123456’ #設置普通用戶 you 123456 ?%代表任意遠端地址登陸,在本地沒辦法登陸
mysql>set password=password('123456'); ? ?#更改root管理員的密碼123456
mysql>set password for 'you'@'localhost'=password('123'); ? ?更改普通用戶密碼為123
mysql>drop user ppp@'%'; ?刪除用戶
mysql>drop user root@'localhost';
mysql>select user , host from mysql . user; 查看mysql的用戶信息
單實例
如何找回密碼:
1、停止數(shù)據(jù)庫
2、修改主配件文件 vim /etc/my.cnf 加入 (skip-grant-tables 跳過授權(quán)表)
3、mysql> update mysql.user set password=password('123') where user='root'; 修改密碼
4、exit 數(shù)據(jù)庫
5、刪除授權(quán)操作skip-grant-tables
6、service mysqld restart 重啟并用新密碼測試登錄
登陸 mysql -uroot -p
多實例修改密碼
1、停止數(shù)據(jù)庫
2、修改主配件文件 vim /etc/my.cnf 加入 (skip-grant-tables 跳過授權(quán)表)
3、mysql> update mysql.user set password=password('123') where user='root'; 修改密碼
4、exit 數(shù)據(jù)庫
5、刪除授權(quán)操作skip-grant-tables
6、service mysqld restart 重啟并用新密碼測試登錄
登陸mysql -u root -p -S /data/3306/mysql.sock
mysql> select user,host from mysql.user; 查看數(shù)據(jù)庫用戶
mysql> show databases; ? #查看數(shù)據(jù)庫
mysql> select databases(); #查看是否進入某一個數(shù)據(jù)庫
mysql> use mysql; ? ? ?#切換數(shù)據(jù)表
mysql> system whoami #切換到linux下
mysql> system ls /
mysql> show tables; ? #查看數(shù)據(jù)表
使用help查詢命令
#創(chuàng)建數(shù)據(jù)庫
mysql> create database you;
Query OK, 1 row affected (0.00 sec)
#顯示數(shù)據(jù)庫
mysql> show databases;
+--------------------+
| Database ? ? ? ? ? |
+--------------------+
| information_schema |
| you ? ? ? ? ? ? ? ?|
| mysql ? ? ? ? ? ? ?|
| test ? ? ? ? ? ? ? |
+--------------------+
5 rows in set (0.00 sec)
mysql> SHOW create database you;
+----------+----------------------------------------------------------------+
| Database | Create Database ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?|
+----------+----------------------------------------------------------------+
| you ? ? ?| CREATE DATABASE `you` /*!40100 DEFAULT CHARACTER SET latin1 */ |
+----------+----------------------------------------------------------------+
1 row in set (0.00 sec)
查看數(shù)據(jù)庫字符集
mysql> show create database abc\g;
+----------+----------------------------------------------------------------+
| Database | Create Database ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?|
+----------+----------------------------------------------------------------+
| abc ? ? ?| CREATE DATABASE `abc` /*!40100 DEFAULT CHARACTER SET latin1 */ |
+----------+----------------------------------------------------------------+
1 row in set (0.00 sec)
創(chuàng)建you_gbk數(shù)據(jù)庫字符集gbk
mysql> CREATE DATABASE `you_gbk` ?DEFAULT CHARACTER SET gbk;
mysql> show databases;
+--------------------+
| Database ? ? ? ? ? |
+--------------------+
| information_schema |
| mysql ? ? ? ? ? ? ?|
| you ? ? ? ? ? ? ? ?|
| you_gbk ? ? ? ? ? ?|
+--------------------+
7 rows in set (0.00 sec)
創(chuàng)建you_utf8數(shù)據(jù)庫字符集utf8;
mysql> CREATE DATABASE `you_utf8` ?DEFAULT CHARACTER SET utf8;
mysql> show databases;
+--------------------+
| Database ? ? ? ? ? |
+--------------------+
| information_schema |
| mysql ? ? ? ? ? ? ?|
| you_gbk ? ? ? ? ? ?|
| you_utf8 ? ? ? ? ? |
+--------------------+
8 rows in set (0.00 sec)
mysql字符集包括字符集和校對規(guī)則
字符集是定義mysql字符串存儲方式,校對規(guī)則定義mysql比較字符串的方式。
刪除數(shù)據(jù)庫
mysql> drop database test;
Query OK, 0 rows affected (0.00 sec)
查看數(shù)據(jù)庫用戶
mysql> select user,host from mysql.user;
+------+-----------------------+
| user | host ? ? ? ? ? ? ? ? ?|
+------+-----------------------+
| root | 127.0.0.1 ? ? ? ? ? ? |
| ? ? ?| localhost ? ? ? ? ? ? |
| root | localhost ? ? ? ? ? ? |
| ? ? ?| localhost.localdomain |
| root | localhost.localdomain |
+------+-----------------------+
5 rows in set (0.00 sec)
連接數(shù)據(jù)庫
mysql> use mysql
#查看是否進入數(shù)據(jù)庫
mysql> select database();
+------------+
| database() |
+------------+
| mysql ? ? ?|
+------------+
1 row in set (0.00 sec)
#查看數(shù)據(jù)庫用戶
mysql> select user();
+----------------+
| user() ? ? ? ? |
+----------------+
| root@localhost |
+----------------+
1 row in set (0.00 sec)
查看數(shù)據(jù)庫中的表
mysql> show tables;
+---------------------------+
| Tables_in_mysql ? ? ? ? ? |
+---------------------------+
| columns_priv ? ? ? ? ? ? ?|
| db ? ? ? ? ? ? ? ? ? ? ? ?|
| event ? ? ? ? ? ? ? ? ? ? |
| func ? ? ? ? ? ? ? ? ? ? ?|
| general_log ? ? ? ? ? ? ? |
| help_category ? ? ? ? ? ? |
| help_keyword ? ? ? ? ? ? ?|
| help_relation ? ? ? ? ? ? |
| help_topic ? ? ? ? ? ? ? ?|
| host ? ? ? ? ? ? ? ? ? ? ?|
| ndb_binlog_index ? ? ? ? ?|
| plugin ? ? ? ? ? ? ? ? ? ?|
| proc ? ? ? ? ? ? ? ? ? ? ?|
| procs_priv ? ? ? ? ? ? ? ?|
| servers ? ? ? ? ? ? ? ? ? |
| slow_log ? ? ? ? ? ? ? ? ?|
| tables_priv ? ? ? ? ? ? ? |
| time_zone ? ? ? ? ? ? ? ? |
| time_zone_leap_second ? ? |
| time_zone_name ? ? ? ? ? ?|
| time_zone_transition ? ? ?|
| time_zone_transition_type |
| user ? ? ? ? ? ? ? ? ? ? ?|
+---------------------------+
23 rows in set (0.00 sec)
跳出mysql操作linux
mysql> system whoami
root
mysql> system ls /
bindev ? lib ?miscopt ? sbin ? ? srv ?usr
bootetc ? lost+found ?mntproc ?selinux ?sys ?var
cgrouphome ?media ?netroot ?sh ? ? ? tmp
查看mysql數(shù)據(jù)庫有多少張表
mysql> show tables from mysql;
+---------------------------+
| Tables_in_mysql ? ? ? ? ? |
+---------------------------+
| columns_priv ? ? ? ? ? ? ?|
| db ? ? ? ? ? ? ? ? ? ? ? ?|
| event ? ? ? ? ? ? ? ? ? ? |
| func ? ? ? ? ? ? ? ? ? ? ?|
| general_log ? ? ? ? ? ? ? |
| help_category ? ? ? ? ? ? |
| help_keyword ? ? ? ? ? ? ?|
| help_relation ? ? ? ? ? ? |
| help_topic ? ? ? ? ? ? ? ?|
| host ? ? ? ? ? ? ? ? ? ? ?|
| ndb_binlog_index ? ? ? ? ?|
| plugin ? ? ? ? ? ? ? ? ? ?|
| proc ? ? ? ? ? ? ? ? ? ? ?|
| procs_priv ? ? ? ? ? ? ? ?|
| servers ? ? ? ? ? ? ? ? ? |
| slow_log ? ? ? ? ? ? ? ? ?|
| tables_priv ? ? ? ? ? ? ? |
| time_zone ? ? ? ? ? ? ? ? |
| time_zone_leap_second ? ? |
| time_zone_name ? ? ? ? ? ?|
| time_zone_transition ? ? ?|
| time_zone_transition_type |
| user ? ? ? ? ? ? ? ? ? ? ?|
+---------------------------+
23 rows in set (0.00 sec)
創(chuàng)建mysql用戶
mysql> create user you@'localhost' identified by '123456';
Query OK, 0 rows affected (0.00 sec)
mysql> select user,host from mysql.user;
+------+-----------------------+
| user | host ? ? ? ? ? ? ? ? ?|
+------+-----------------------+
| root | 127.0.0.1 ? ? ? ? ? ? |
| ? ? ?| localhost ? ? ? ? ? ? |
| root | localhost ? ? ? ? ? ? |
| you ?| localhost ? ? ? ? ? ? |
| ? ? ?| localhost.localdomain |
| root | localhost.localdomain |
+------+-----------------------+
6 rows in set (0.00 sec)
刪除mysql用戶
mysql> drop user you1@'localhost';
Query OK, 0 rows affected (0.00 sec)
刪除用戶
delete from mysql.user where user='you';
delete from mysql.user where user='you'and user='root';
用戶授權(quán),先創(chuàng)建用戶再授權(quán)用戶
mysql> create user 'xiaoyou'@'localhost' identified by '123456';
mysql> grant all on *.* to 'xiaoyou'@'localhost';
Query OK, 0 rows affected (0.00 sec)
查看用戶權(quán)限 USAGE只有連接的權(quán)限
mysql> show grants for oldboy@localhost\G;
*************************** 1. row ***************************
Grants for oldboy@localhost: GRANT USAGE ON *.* TO 'oldboy'@'localhost' IDENTIFIED BY PASSWORD '*6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9'
1 row in set (0.00 sec)
ERROR:
No query specified
給某個數(shù)據(jù)庫授權(quán)
mysql> create user 'youyou'@'localhost' identified by '123456';
Query OK, 0 rows affected (0.00 sec)
mysql> select user,host from mysql.user;
+---------+-----------------------+
| user ? ?| host ? ? ? ? ? ? ? ? ?|
+---------+-----------------------+
| root ? ?| 127.0.0.1 ? ? ? ? ? ? |
| ? ? ? ? | localhost ? ? ? ? ? ? |
| root ? ?| localhost ? ? ? ? ? ? |
| xiaoyou | localhost ? ? ? ? ? ? |
| youyou ?| localhost ? ? ? ? ? ? |
| ? ? ? ? | localhost.localdomain |
| root ? ?| localhost.localdomain |
+---------+-----------------------+
8 rows in set (0.00 sec)
mysql> show databases;
+--------------------+
| Database ? ? ? ? ? |
+--------------------+
| information_schema |
| mysql ? ? ? ? ? ? ?|
| you ? ? ? ? ? ? ? ?|
| you_abc ? ? ? ? ? ?|
| you_gbk ? ? ? ? ? ?|
| you_utf8 ? ? ? ? ? |
+--------------------+
6 rows in set (0.00 sec)
創(chuàng)建拉丁字符集數(shù)據(jù)庫 ?mysql默認字符集
mysql> create database data0;
Query OK, 1 row affected (0.00 sec)
linux系統(tǒng)字符集 vim /etc/sysconfig/i18n ?LANG="zh CN.UTF-8"
創(chuàng)建utf8字符集數(shù)據(jù)庫
mysql> create database data2 default character set utf8 collate utf8_general_ci;
Query OK, 1 row affected (0.00 sec)
創(chuàng)建gbk字符集數(shù)據(jù)庫
mysql> create database data3 default character set gbk collate gbk_chinese_ci;
Query OK, 1 row affected (0.00 sec)
mysql> create database youyou;
Query OK, 1 row affected (0.00 sec)
mysql> show databases;
+--------------------+
| Database ? ? ? ? ? |
+--------------------+
| information_schema |
| mysql ? ? ? ? ? ? ?|
| you ? ? ? ? ? ? ? ?|
| you_abc ? ? ? ? ? ?|
| you_gbk ? ? ? ? ? ?|
| you_utf8 ? ? ? ? ? |
| youyou ? ? ? ? ? ? |
+--------------------+
7 rows in set (0.00 sec)
mysql> use youyou
Database changed
mysql> grant all on youyou.* to youyou@localhost;
直接創(chuàng)建用戶和授權(quán)
mysql> grant all on youyou.* to etian@localhost identified by '123456';
Query OK, 0 rows affected (0.00 sec)
mysql> grant create,delete,update,insert on aaa.* ?to you2@localhost identified by '123456';
Query OK, 0 rows affected (0.00 sec)
mysql> show databases;
+--------------------+
| Database ? ? ? ? ? |
+--------------------+
| information_schema |
| abc ? ? ? ? ? ? ? ?|
| anni_bgk ? ? ? ? ? |
| data1 ? ? ? ? ? ? ?|
| data2 ? ? ? ? ? ? ?|
| mysql ? ? ? ? ? ? ?|
+--------------------+
6 rows in set (0.00 sec)
收回授權(quán)
mysql> revoke insert on youyou.* from 'jeffrey'@'localhost';
ERROR 1141 (42000): There is no such grant defined for user 'jeffrey' on host 'localhost'
mysql> revoke insert on youyou.* from 'youyou'@'localhost';
Query OK, 0 rows affected (0.00 sec)
mysql> show grents for ww@localhost\G
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'grents for ww@localhost' at line 1
mysql> show grants for ww@localhost\G;
*************************** 1. row ***************************
Grants for ww@localhost: GRANT USAGE ON *.* TO 'ww'@'localhost' IDENTIFIED BY PASSWORD '*6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9'
*************************** 2. row ***************************
Grants for ww@localhost: GRANT SELECT, UPDATE, DELETE, CREATE, DROP, REFERENCES, INDEX, ALTER, CREATE TEMPORARY TABLES, LOCK TABLES, EXECUTE, CREATE VIEW, SHOW VIEW, CREATE ROUTINE, ALTER ROUTINE, EVENT, TRIGGER ON `wwtable`.* TO 'ww'@'localhost'
2 rows in set (0.00 sec)
查看數(shù)據(jù)庫授權(quán)表
mysql> desc mysql.user;
主從mysql授權(quán)
生產(chǎn)環(huán)境主庫用戶的授權(quán)
grant select, insert, update, delete on blog.* to blog@'172.20.100.%' i dentified by '123456';
生產(chǎn)環(huán)境從庫用戶的授權(quán)
grant select on blog.* to blog@'10.0.0.%' identified by '123456';
例:
寫庫
blog ?you456 3306 10.0.0.7
讀庫
blog ?you456 3306 10.0.0.8
創(chuàng)建gbk數(shù)據(jù)庫
CREATE DATABASE anni_bgk CHARACTER SET gbk collate gbk_chinese_ci;
建立測試表test
命令: create talbe test ( .....)
mysql數(shù)據(jù)庫類型
1、INT[(M)]型:正常大小整數(shù)類型
2、DOUBLE[(M,D)] [ZEROFILL]型,正常大小雙精密浮點數(shù)字類型
3、DATE 日期型
4、CHAR(M)型:定長字符串類型,當存儲時,總是用空格填滿右邊到指定的長度
5、BLOB TEXT 類型,最大長度為65535個字符
6、VARCHAR型:變長字符串類型
例:
mysql> create table test(id int(4) not null primary key auto_increment, name char(20) not null);
Query OK, 0 rows affected (0.08 sec)
查看表結(jié)構(gòu)
mysql> desc test;
+-------+----------+------+-----+---------+----------------+
| Field | Type ? ? | Null | Key | Default | Extra ? ? ? ? ?|
+-------+----------+------+-----+---------+----------------+
| id ? ?| int(4) ? | NO ? | PRI | NULL ? ?| auto_increment |
| name ?| char(20) | NO ? | ? ? | NULL ? ?| ? ? ? ? ? ? ? ?|
+-------+----------+------+-----+---------+----------------+
2 rows in set (0.00 sec)
查看建表語句
mysql> show create table from test\G
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'from test' at line 1
mysql> show create table test\G
*************************** 1. row ***************************
Table: test
Create Table: CREATE TABLE `test` (
`id` int(4) NOT NULL AUTO_INCREMENT,
`name` char(20) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=gbk
1 row in set (0.00 sec)
插入數(shù)據(jù)
命令:insert into 表名[(字段名1)(字段名n)] values (值1)(值2)]
mysql> desc test;
+-------+----------+------+-----+---------+----------------+
| Field | Type ? ? | Null | Key | Default | Extra ? ? ? ? ?|
+-------+----------+------+-----+---------+----------------+
| id ? ?| int(4) ? | NO ? | PRI | NULL ? ?| auto_increment |
| name ?| char(20) | NO ? | ? ? | NULL ? ?| ? ? ? ? ? ? ? ?|
+-------+----------+------+-----+---------+----------------+
2 rows in set (0.01 sec)
mysql> insert into test values(1,'user1');
Query OK, 1 row affected (0.00 sec)
mysql> select * from test;
+----+-------+
| id | name ?|
+----+-------+
| ?1 | user1 |
+----+-------+
1 row in set (0.00 sec)
mysql> insert into test (id,name) values (3,'user3');
Query OK, 1 row affected (0.00 sec)
mysql> select * from test;
+----+-------+
| id | name ?|
+----+-------+
| ?1 | user1 |
| ?2 | user2 |
| ?3 | user3 |
+----+-------+
3 rows in set (0.00 sec)
mysql> insert into test(name) values('user4')
-> ;
Query OK, 1 row affected (0.00 sec)
mysql> select * from test;
+----+-------+
| id | name ?|
+----+-------+
| ?1 | user1 |
| ?2 | user2 |
| ?3 | user3 |
| ?4 | user4 |
+----+-------+
4 rows in set (0.00 sec)
mysql> insert into test (id,name) values (5,'user5'),(6,'user6');
Query OK, 2 rows affected (0.00 sec)
Records: 2 ?Duplicates: 0 ?Warnings: 0
mysql> select * from test;
+----+-------+
| id | name ?|
+----+-------+
| ?1 | user1 |
| ?2 | user2 |
| ?3 | user3 |
| ?4 | user4 |
| ?5 | user5 |
| ?6 | user6 |
+----+-------+
6 rows in set (0.00 sec)
mysql> insert into test(name) values('user7'),('user8');
Query OK, 2 rows affected (0.00 sec)
Records: 2 ?Duplicates: 0 ?Warnings: 0
mysql> select * from test;
+----+-------+
| id | name ?|
+----+-------+
| ?1 | user1 |
| ?2 | user2 |
| ?3 | user3 |
| ?4 | user4 |
| ?5 | user5 |
| ?6 | user6 |
| ?7 | user7 |
| ?8 | user8 |
+----+-------+
8 rows in set (0.00 sec)
you數(shù)據(jù)庫臨時備份
[root@localhost mysql]# mysqldump -uroot -p'root' -P 3306 -S /var/lib/mysql/mysql.sock ?-B you > /tmp/you_bak.sql
查看備份發(fā)數(shù)據(jù)庫內(nèi)容
[root@localhost tmp]# egrep -v "^$|#|\*|--" you_bak.sql
USE `you`;
DROP TABLE IF EXISTS `test`;
CREATE TABLE `test` (
`id` int(4) NOT NULL AUTO_INCREMENT,
`name` char(20) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM AUTO_INCREMENT=9 DEFAULT CHARSET=gbk;
LOCK TABLES `test` WRITE;
INSERT INTO `test` VALUES (1,'user1'),(2,'user2'),(3,'user3'),(4,'user4'),(5,'user5'),(6,'user6'),(7,'user7'),(8,'user8');
UNLOCK TABLES;
查詢格式
命令:select from where
mysql> select * from test limit 0,2 ;
+----+-------+
| id | name ?|
+----+-------+
| ?1 | user1 |
| ?2 | user2 |
+----+-------+
2 rows in set (0.00 sec)
mysql> select * from test limit 2,6 ;
+----+-------+
| id | name ?|
+----+-------+
| ?3 | user3 |
| ?4 | user4 |
| ?5 | user5 |
| ?6 | user6 |
| ?7 | user7 |
| ?8 | user8 |
+----+-------+
6 rows in set (0.00 sec)
查倒順的前兩行
mysql> select * from test order by id desc limit 0,2 ;
+----+-------+
| id | name ?|
+----+-------+
| ?8 | user8 |
| ?7 | user7 |
+----+-------+
2 rows in set (0.00 sec)
升順查找
mysql> select * from test order by id asc limit 0,2 ;
+----+-------+
| id | name ?|
+----+-------+
| ?1 | user1 |
| ?2 | user2 |
+----+-------+
2 rows in set (0.00 sec)
查詢某一條name記錄
mysql> select * from test where name='user2' ;
+----+-------+
| id | name ?|
+----+-------+
| ?2 | user2 |
+----+-------+
1 row in set (0.00 sec)
查找范圍
mysql> select * from test where id >2 and id <6 ;
+----+-------+
| id | name ?|
+----+-------+
| ?3 | user3 |
| ?4 | user4 |
| ?5 | user5 |
+----+-------+
3 rows in set (0.00 sec)
字符一定要帶單引號
mysql> select * from test where id > 7 or id < 2 ;
+----+-------+
| id | name ?|
+----+-------+
| ?1 | user1 |
| ?8 | user8 |
+----+-------+
2 rows in set (0.00 sec)
兩張表條件關(guān)聯(lián)查詢
mysql> select test.id,test.name,test1.name,test1.age from test,test1 ?where test.name=test1.name;
+----+-------+-------+-----+
| id | name ?| name ?| age |
+----+-------+-------+-----+
| ?7 | user7 | user7 | ?18 |
| ?8 | user8 | user8 | ?13 |
+----+-------+-------+-----+
2 rows in set (0.00 sec)
mysql> select test.id,test.name,test1.name,test1.age from test,test1 ?where test.name=test1.name and test1.name='xiaoyou';
Empty set (0.00 sec)
修改表中的數(shù)據(jù)
update 表名 set 字段=新值,... where 條件
條件一定要加 where
mysql> update test set name='xiaoyou' where name='user4';
Query OK, 1 row affected (0.00 sec)
Rows matched: 1 ?Changed: 1 ?Warnings: 0
mysql> select * from test;
+----+---------+
| id | name ? ?|
+----+---------+
| ?1 | user1 ? |
| ?2 | user2 ? |
| ?3 | user3 ? |
| ?4 | xiaoyou |
| ?5 | user5 ? |
| ?6 | user6 ? |
| ?7 | user7 ? |
| ?8 | user8 ? |
+----+---------+
8 rows in set (0.01 sec)
不允許這樣操作,一定要加條件
mysql> update test set name='xiaoyou';
Query OK, 7 rows affected (0.00 sec)
Rows matched: 8 ?Changed: 7 ?Warnings: 0
mysql> select * from test;
+----+---------+
| id | name ? ?|
+----+---------+
| ?1 | xiaoyou |
| ?2 | xiaoyou |
| ?3 | xiaoyou |
| ?4 | xiaoyou |
| ?5 | xiaoyou |
| ?6 | xiaoyou |
| ?7 | xiaoyou |
| ?8 | xiaoyou |
+----+---------+
8 rows in set (0.00 sec)
恢復錯復
[root@localhost mysql]# mysql -uroot -p'root' -P 3306 -S /var/lib/mysql/mysql.sock < /tmp/you_bak.sql
mysql> delete from test where id >3;
Query OK, 3 rows affected (0.01 sec)
mysql> select * from test;
+----+---------+
| id | name ? ?|
+----+---------+
| ?1 | user1 ? |
| ?2 | user2 ? |
| ?3 | xiaoyou |
+----+---------+
3 rows in set (0.00 sec)
mysql> delete from test where id =3;
Query OK, 1 row affected (0.00 sec)
mysql> select * from test;
+----+-------+
| id | name ?|
+----+-------+
| ?1 | user1 |
| ?2 | user2 |
+----+-------+
2 rows in set (0.00 sec)
mysql> select * from test;
+----+-------+
| id | name ?|
+----+-------+
| ?1 | user1 |
| ?2 | user2 |
+----+-------+
2 rows in set (0.00 sec)
刪除表中的數(shù)據(jù)
mysql> delete from test where id =1;
Query OK, 1 row affected (0.00 sec)
不充許這樣操作,一定要加條件
mysql> select * from test;
+----+-------+
| id | name ?|
+----+-------+
| ?2 | user2 |
+----+-------+
1 row in set (0.00 sec)
mysql> delete from test;
Query OK, 1 row affected (0.00 sec)
直接把表清空
mysql> truncate table test;
Query OK, 0 rows affected (0.00 sec)
mysql> select * from test;
Empty set (0.00 sec)
在表中添加字段
mysql> alter table test1 add sex int(4);
Query OK, 0 rows affected (0.01 sec)
Records: 0 ?Duplicates: 0 ?Warnings: 0
mysql> alter table test1 add agg int(4) after name;
Query OK, 0 rows affected (0.01 sec)
Records: 0 ?Duplicates: 0 ?Warnings: 0
mysql> desc test1
-> ;
+-------+----------+------+-----+---------+----------------+
| Field | Type ? ? | Null | Key | Default | Extra ? ? ? ? ?|
+-------+----------+------+-----+---------+----------------+
| id ? ?| int(4) ? | NO ? | PRI | NULL ? ?| auto_increment |
| name ?| char(20) | NO ? | ? ? | NULL ? ?| ? ? ? ? ? ? ? ?|
| agg ? | int(4) ? | YES ?| ? ? | NULL ? ?| ? ? ? ? ? ? ? ?|
| sex ? | int(4) ? | YES ?| ? ? | NULL ? ?| ? ? ? ? ? ? ? ?|
+-------+----------+------+-----+---------+----------------+
4 rows in set (0.00 sec)
刪除字段
mysql> alter table test1 drop agg;
Query OK, 0 rows affected (0.01 sec)
Records: 0 ?Duplicates: 0 ?Warnings: 0
mysql> desc test1;
+-------+----------+------+-----+---------+----------------+
| Field | Type ? ? | Null | Key | Default | Extra ? ? ? ? ?|
+-------+----------+------+-----+---------+----------------+
| id ? ?| int(4) ? | NO ? | PRI | NULL ? ?| auto_increment |
| name ?| char(20) | NO ? | ? ? | NULL ? ?| ? ? ? ? ? ? ? ?|
| sex ? | int(4) ? | YES ?| ? ? | NULL ? ?| ? ? ? ? ? ? ? ?|
+-------+----------+------+-----+---------+----------------+
3 rows in set (0.00 sec)
修改表名
mysql> rename table test1 to test;
Query OK, 0 rows affected (0.00 sec)
mysql> show tables;
+-----------------+
| Tables_in_user1 |
+-----------------+
| test ? ? ? ? ? ?|
+-----------------+
1 row in set (0.00 sec)
mysql>drop table test1;
mysql> insert into test(name) values('小游');
Query OK, 1 row affected (0.00 sec)
mysql> select * from test;
+----+-----------+------+
| id | name ? ? ?| sex ?|
+----+-----------+------+
| ?1 | user1 ? ? | NULL |
| ?2 | user2 ? ? | NULL |
| ?3 | user3 ? ? | ? 16 |
| ?4 | user4 ? ? | ? 18 |
| ?5 | user5 ? ? | ? 19 |
| ?6 | xiaohu ? ?| NULL |
| ?7 | 小游 ? ?| NULL |
+----+-----------+------+
8 rows in set (0.00 sec)
如果不支持中文,一定要先set names gbk,不然出現(xiàn)亂碼
改服務端字符集
更改my.cnf參數(shù)
[mysqld] 一定要在mysqld下面加
default-character-set=gbk
改客戶端字符集
如果不支持中文,可以在備份文件加入set names gbk還原
mysql> set names gbk;
Query OK, 0 rows affected (0.00 sec)
mysql> select * from test where name='小游';
+----+--------+------+
| id | name ? | sex ?|
+----+--------+------+
| ?7 | 小游 | NULL |
+----+--------+------+
1 row in set (0.00 sec)
在linux命令行執(zhí)行mysql里命令
[root@localhost ~]# mysql -uroot -p'root' -S /var/lib/mysql/mysql.sock -e "show databases;"
+--------------------+
| Database ? ? ? ? ? |
+--------------------+
| information_schema |
| mysql ? ? ? ? ? ? ?|
| test ? ? ? ? ? ? ? |
| user1 ? ? ? ? ? ? ?|
+--------------------+
[root@localhost tmp]# egrep -v "#|\*|--|^$" /tmp/user1_bak.sql
備份數(shù)據(jù)庫
mysqldump -uroot -p'root' -S /var/lib/mysql/mysql.sock -B user1 > /tmp/user1_bak.sql
還原數(shù)據(jù)庫
mysql -uroot -p'root' -S /var/lib/mysql/mysql.sock -B user1 < /tmp/user1_bak.sql
提示:
1、文件本文字符集要正確gb2312
2、文件里加入set names gbk;
3、恢復時執(zhí)行mysql --defaul-character-set
mysql字符集介紹
GBK 定長 雙字節(jié) 不是國際標準,支持的系統(tǒng)不少
UTF-8 非定長 1-4字節(jié) 廣泛支持,MYSQL也使用UTF-8
latin1 MYSQL默認字符集
查看默認節(jié)符集
mysql> show variables like 'character_set%';
+--------------------------+----------------------------+
| Variable_name ? ? ? ? ? ?| Value ? ? ? ? ? ? ? ? ? ? ?|
+--------------------------+----------------------------+
| character_set_client ? ? | latin1 ? ? ? ? ? ? ? ? ? ? |
| character_set_connection | latin1 ? ? ? ? ? ? ? ? ? ? |
| character_set_database ? | latin1 ? ? ? ? ? ? ? ? ? ? |
| character_set_filesystem | binary ? ? ? ? ? ? ? ? ? ? |
| character_set_results ? ?| latin1 ? ? ? ? ? ? ? ? ? ? |
| character_set_server ? ? | latin1 ? ? ? ? ? ? ? ? ? ? |
| character_set_system ? ? | utf8 ? ? ? ? ? ? ? ? ? ? ? |
| character_sets_dir ? ? ? | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+
8 rows in set (0.00 sec)
修改后的
mysql> set names gbk;
mysql> show variables like 'character_set%';
+--------------------------+----------------------------+
| Variable_name ? ? ? ? ? ?| Value ? ? ? ? ? ? ? ? ? ? ?|
+--------------------------+----------------------------+
| character_set_client ? ? | gbk ? ? ? ? ? ? ? ? ? ? ? ?|
| character_set_connection | gbk ? ? ? ? ? ? ? ? ? ? ? ?|
| character_set_database ? | latin1 ? ? ? ? ? ? ? ? ? ? |
| character_set_filesystem | binary ? ? ? ? ? ? ? ? ? ? |
| character_set_results ? ?| gbk ? ? ? ? ? ? ? ? ? ? ? ?|
| character_set_server ? ? | latin1 ? ? ? ? ? ? ? ? ? ? |
| character_set_system ? ? | utf8 ? ? ? ? ? ? ? ? ? ? ? |
| character_sets_dir ? ? ? | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+
8 rows in set (0.00 sec)
改服務端字符集
更改my.cnf參數(shù)
[mysqld] 一定要在mysqld下面加
default-character-set=gbk
改客戶端字符集
如果不支持中文,可以在備份文件加入set names gbk還原
mysql> set names gbk;
Query OK, 0 rows affected (0.00 sec)
1、在服務器my.cnf配置文件里[mysqld]模塊下添加字符集配置,重啟生效生,創(chuàng)建數(shù)據(jù)庫和表默認都是這個設置的字符集。
2、客戶端字符集設置,set names gbk; 這樣可以確保插入后的中文 ,不出現(xiàn)亂碼,對執(zhí)行set names gbk;之前插入的中文無效。
在linux登陸和mysql下的set names gbk;相同
[root@localhost tmp]# mysql -uroot -p'root' -S /var/lib/mysql/mysql.sock --default-character-set=gbk
mysql> show variables like 'character_set%';
+--------------------------+--------------------------------------------+
| Variable_name ? ? ? ? ? ?| Value ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?|
+--------------------------+--------------------------------------------+
| character_set_client ? ? | gbk ? ? #客戶端字符集set names gbk; ? ? ? ?|
| character_set_connection | gbk ? ? #連接字符集 set names gbk; ? ? ? ? |
| character_set_database ? | gbk ?#數(shù)據(jù)庫字符集 配置文件或建庫建表指定 ?|
| character_set_filesystem | binary ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? |
| character_set_results ? ?| gbk ? #返回結(jié)果字符集,set names gbk; ? ? ?|
| character_set_server ? ? | gbk ? #服務器字符集 配置文件或建庫建表指定 |
| character_set_system ? ? | utf8 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? |
| character_sets_dir ? ? ? | /usr/share/mysql/charsets/ ? ? ? ? ? ? ? ? |
+--------------------------+--------------------------------------------+
8 rows in set (0.00 sec)
linux命令行查看表
[root@localhost tmp]# mysql -uroot -p'root' -S /var/lib/mysql/mysql.sock ?-e "select * from user1.test;" ?user1是數(shù)據(jù)庫 test是數(shù)據(jù)庫里的表
+----+--------+------+
| id | name ? | sex ?|
+----+--------+------+
| ?1 | user1 ?| NULL |
| ?2 | user2 ?| NULL |
| ?3 | user3 ?| ? 16 |
| ?4 | user4 ?| ? 18 |
| ?5 | user5 ?| ? 19 |
| ?6 | xiaohu | NULL |
| ?7 | 小游 | NULL |
+----+--------+------+
[root@localhost ~]# mysql -uroot -p'root' -S /var/lib/mysql/mysql.sock -e "set names gbk;select * from data1.test;"
+----+--------+------+-----+------+
| id | name ? | sex ?| age | org ?|
+----+--------+------+-----+------+
| ?1 | user1 ?| NULL | ? 0 | NULL |
| ?2 | user2 ?| NULL | ?26 | NULL |
| ?4 | user4 ?| NULL | ? 0 | NULL |
| ?5 | user5 ?| NULL | ? 0 | NULL |
| ?6 | user6 ?| NULL | ? 0 | NULL |
| ?7 | 小游 | NULL | ? 0 | NULL |
| ?8 | 小游 | NULL | ? 0 | NULL |
+----+--------+------+-----+------+
查看mysql支持引擎
mysql> show engines;
+------------+---------+------------------------------------------------------------+--------------+------+------------+
| Engine ? ? | Support | Comment ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?| Transactions | XA ? | Savepoints |
+------------+---------+------------------------------------------------------------+--------------+------+------------+
| MRG_MYISAM | YES ? ? | Collection of identical MyISAM tables ? ? ? ? ? ? ? ? ? ? ?| NO ? ? ? ? ? | NO ? | NO ? ? ? ? |
| CSV ? ? ? ?| YES ? ? | CSV storage engine ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? | NO ? ? ? ? ? | NO ? | NO ? ? ? ? |
| MyISAM ? ? | DEFAULT | Default engine as of MySQL 3.23 with great performance ? ? | NO ? ? ? ? ? | NO ? | NO ? ? ? ? |
| InnoDB ? ? | YES ? ? | Supports transactions, row-level locking, and foreign keys | YES ? ? ? ? ?| YES ?| YES ? ? ? ?|
| MEMORY ? ? | YES ? ? | Hash based, stored in memory, useful for temporary tables ?| NO ? ? ? ? ? | NO ? | NO ? ? ? ? |
+------------+---------+------------------------------------------------------------+--------------+------+------------+
5 rows in set (0.00 sec)
備份數(shù)據(jù)庫
普通備份
[root@localhost ~]# mysqldump -uroot -p'root' ?data1 >/tmp/data_bak.sql
[root@localhost ~]# mysqldump -uroot -p'root' -S /var/lib/mysql/mysql.sock data1|gzip ?>/tmp/data$(date +%F).sql.gz
備份多個庫 data1 you_bgk
[root@localhost tmp]# mysqldump -uroot -p'root' -S /var/lib/mysql/mysql.sock -B data1 you_bgk|gzip >/tmp/database_bak$(date +%F).sql.gz
如果分庫備份
備份表 data1是庫名 ?test是表名
[root@localhost tmp]# mysqldump -uroot -p'root' -S /var/lib/mysql/mysql.sock data1 test >/tmp/test_table.sql
備份多張表 ?data1是庫名 ?test是表名 aaa是表名
[root@localhost tmp]# mysqldump -uroot -p'root' -S /var/lib/mysql/mysql.sock data1 test aaa >/tmp/test_table.sql
備份庫和表結(jié)構(gòu)
[root@localhost tmp]# mysqldump -uroot -p'root' -S /var/lib/mysql/mysql.sock -d data1 >/tmp/aaa.sql
[root@localhost tmp]# egrep -v "^$|#|\*|--" aaa.sql
DROP TABLE IF EXISTS `aaa`;
CREATE TABLE `aaa` (
`name` char(20) NOT NULL,
`age` int(3) NOT NULL,
PRIMARY KEY (`name`)
) ENGINE=MyISAM DEFAULT CHARSET=gbk;
DROP TABLE IF EXISTS `test`;
CREATE TABLE `test` (
`id` int(3) NOT NULL AUTO_INCREMENT,
`name` char(20) NOT NULL,
`sex` int(4) DEFAULT NULL,
`age` int(4) NOT NULL,
`org` int(4) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM AUTO_INCREMENT=29 DEFAULT CHARSET=gbk;
讓備份結(jié)果輸出少一些 ?--compact
[root@localhost tmp]# mysqldump -uroot -p'root' -S /var/lib/mysql/mysql.sock ?--compact -d data1 >/tmp/aaa.sql
恢復數(shù)據(jù)庫
1、source 命令恢復
用source加linux命令行的路徑直接恢復mysql數(shù)據(jù)
mysql> source /tmp/tmp.sql
Database changed
Query OK, 0 rows affected (0.00 sec)
Query OK, 0 rows affected (0.05 sec)
Query OK, 0 rows affected (0.00 sec)
[root@localhost tmp]# mysql -uroot -p'root' -S /var/lib/mysql/mysql.sock ?-e "source /tmp/tmp.sql "
2、mysql命令導入更新恢復
[root@localhost tmp]# mysql -uroot -p'root' -S /var/lib/mysql/mysql.sock ?< /tmp/tmp.sql
假定開發(fā)人員讓我們插入數(shù)據(jù)到數(shù)據(jù)庫,可能是郵件發(fā)的,內(nèi)容可能是字符串或都是下面的文件,帶中文
sql文里沒有use data1的時候,在導入時路徑就必須指定數(shù)據(jù)庫名
[root@localhost tmp]# mysql -uroot -p'root' -S /var/lib/mysql/mysql.sock ?< /tmp/aa.sql
mysql -e實現(xiàn)非交互式對話
[root@localhost tmp]# mysql -uroot -p'root' -e "select * from data1.test;"
echo 和 -e 類似命令
[root@localhost tmp]# echo "show status" | mysql -uroot -p'root' -S /var/lib/mysql/mysql.sock
[root@localhost tmp]#cat | mysql -uroot -p'root' -S /var/lib/mysql/mysql.sock << EOF
show databases;
EOF
[root@localhost tmp]# cat | mysql -uroot -p'root' -S /var/lib/mysql/mysql.sock << EOF
> show databases;
> EOF
Database
information_schema
anni_bgk
data0
data1
data2
data3
mysql
you
you1
[root@localhost tmp]# mysql -uroot -p'root' -e "select * from data1.test;select * from data1.aaa;"
查看mysql狀態(tài)
[root@localhost tmp]# mysql -uroot -p'root' -S /var/lib/mysql/mysql.sock ?-e "show processlist;"
[root@localhost tmp]# mysql -uroot -p'root' -S /var/lib/mysql/mysql.sock ?-e "show full processlist;"
+----+------+-----------+-------+---------+------+-------+-----------------------+
| Id | User | Host ? ? ?| db ? ?| Command | Time | State | Info ? ? ? ? ? ? ? ? ?|
+----+------+-----------+-------+---------+------+-------+-----------------------+
| ?3 | root | localhost | data1 | Sleep ? | ?168 | ? ? ? | NULL ? ? ? ? ? ? ? ? ?|
| ?7 | root | localhost | NULL ?| Query ? | ? ?0 | NULL ?| show full processlist |
+----+------+-----------+-------+---------+------+-------+-----------------------+
mysql sleep過多的問題
[root@localhost tmp]# mysql -uroot -p'root' -S /var/lib/mysql/mysql.sock ?-e "show full processlist;" |egrep -v "sleep"
IdUserHostdbCommandTimeStateInfo
3rootlocalhostdata1Sleep291NULL
10rootlocalhostNULLQuery0NULLshow full processlist
查看mysql參數(shù)
[root@localhost tmp]# mysql -uroot -p'root' -S /var/lib/mysql/mysql.sock ?-e "show variables"
查看mysql狀態(tài)
[root@localhost tmp]# mysql -uroot -p'root' -S /var/lib/mysql/mysql.sock ?-e "show status"
查看mysql各個查詢狀態(tài)
[root@localhost tmp]# mysql -uroot -p'root' -S /var/lib/mysql/mysql.sock ?-e "show global status"
過濾Com_select|Com_insert|Com_delete|Com_update
[root@localhost tmp]# mysql -uroot -p'root' -S /var/lib/mysql/mysql.sock ?-e "show global status"| egrep "Com_select|Com_insert|Com_delete|Com_update"
Com_delete0
Com_delete_multi0
Com_insert0
Com_insert_select0
Com_select18
Com_update0
Com_update_multi0
查看引擎的緩沖區(qū)
[root@localhost tmp]# mysql -uroot -p'root' -S /var/lib/mysql/mysql.sock ?-e "show variables;"|grep key_buffer
key_buffer_size8384512
設置緩沖區(qū)
[root@localhost tmp]# mysql -uroot -p'root' -S /var/lib/mysql/mysql.sock ?-e "set global key_buffer_size = 32776192;"
[root@localhost tmp]# mysql -uroot -p'root' -S /var/lib/mysql/mysql.sock ?-e "show variables;"|grep key_buffer
key_buffer_size32776192 ?#32M
源碼包
[root@localhost tmp]# vim /data/3306/my.cnf
sedi -i 's#key_buffer_size = 16M# key_buffer_size = 32M#g' /data/3306/my.cnf
安裝mysql
建立mysql帳號
groupadd mysql;
useradd -s /sbin/nologin -g mysql -M mysql;
-s /sbin/nologin 表示禁止該用戶登陸,加強安全
-g mysql 指定屬于mysql組
-M 表示不創(chuàng)建用戶家目錄
查看創(chuàng)建的用戶
tail -1 /etc/passwd
mysql:x:500:500::/home/mysql:/sbin/nologin
編繹之前安裝gcc ?yum -y install gcc*
yum -y install ncurses-devel
./configure \
--prefix=/usr/local/mysql \
--with-unix-socket-path=/usr/local/mysql/tmp/mysql.sock \
--localstatedir=/usr/local/mysql/data \
--enable-assembler \
--enable-thread-safe-client \
--with-mysqld-user=mysql \
--with-big-tables \
--without-debug \
--with-prthread \
--enable-assembler \
--with-extra-charsets=complex \
--with-readline \
--with-ssl \
--with-embedded-server \
--enable-local-infile \
--with-plugins=partition,innobase \
--with-plugin-PLUGIN \
--with-mysqld-ldflags=-all-static \
--with-client-ldflags=-all-static
make && make install
ls /usr/local/mysql/
killall mysqld
以前的mysql單實例清除
生產(chǎn)環(huán)境多實例 內(nèi)存16G,雙CPU 八核,磁盤6*600G sas 15k
主從同步
mysql> grant replication slave on *.* to rep@'172.20.100.%' identified by '123456';
Query OK, 0 rows affected (0.00 sec)
replication slave 為mysql同步的必須權(quán)限,此處不要授權(quán)all
*.*所有庫所有表
mysql> select user,host from mysql.user;
+------+-----------------------+
| user | host ? ? ? ? ? ? ? ? ?|
+------+-----------------------+
| root | 127.0.0.1 ? ? ? ? ? ? |
| rep ?| 172.20.100.% ? ? ? ? ?|
| ? ? ?| localhost ? ? ? ? ? ? |
| root | localhost ? ? ? ? ? ? |
| ? ? ?| localhost.localdomain |
| root | localhost.localdomain |
+------+-----------------------+
6 rows in set (0.00 sec)
生產(chǎn)環(huán)境時,操作主從復制,需要申請停機時間。鎖表會影響業(yè)務
鎖表主庫
mysql> flush tables with read lock;
Query OK, 0 rows affected (0.00 sec)
鎖表失效時間以下
mysql> show variables like '%timeout%';
+----------------------------+-------+
| Variable_name ? ? ? ? ? ? ?| Value |
+----------------------------+-------+
| connect_timeout ? ? ? ? ? ?| 10 ? ?|
| delayed_insert_timeout ? ? | 300 ? |
| innodb_lock_wait_timeout ? | 120 ? |
| innodb_rollback_on_timeout | OFF ? |
| interactive_timeout ? ? ? ?| 28800 |
| net_read_timeout ? ? ? ? ? | 30 ? ?|
| net_write_timeout ? ? ? ? ?| 60 ? ?|
| slave_net_timeout ? ? ? ? ?| 3600 ?|
| table_lock_wait_timeout ? ?| 50 ? ?|
| wait_timeout ? ? ? ? ? ? ? | 28800 |
+----------------------------+-------+
10 rows in set (0.00 sec)
mysql> show master status;
+------------------+----------+--------------+------------------+
| File ? ? ? ? ? ? | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+----------+--------------+------------------+
| mysql-bin.000004 | ? ? ?536 | ? ? ? ? ? ? ?| ? ? ? ? ? ? ? ? ?|
+------------------+----------+--------------+------------------+
1 row in set (0.00 sec)
[root@localhost ~]# mysqldump -uroot -p -S /data/3306/mysql.sock -A -B |gzip >/server/backup/mysql_bak.$(date +%F).sql.gz
-A 備份所有庫
-B 添加參數(shù)比如DROP等
[root@localhost backup]# ls
mysql_bak.2017-04-21.sql.gz
解鎖表
mysql> unlock tables;
Query OK, 0 rows affected (0.00 sec)
從庫操作
[root@localhost backup]# mysql -uroot -p -S /data/3307/mysql.sock < /server/backup/mysql_bak.2017-04-21.sql
如果需要停掉從庫,執(zhí)行以下命令
[root@localhost ~]# mysql -uroot -p -S /data/3307/mysql.sock -e "stop slave;
方法1
cat |mysql -uroot -p'root' -S /data/3307/mysql.sock<< EOF
CHANGE MASTER TO
MASTER_HOST='172.20.100.134',
MASTER_PORT=3306,
MASTER_USER='rep',
MASTER_PASSWORD='123456',
MASTER_LOG_FILE='mysql-bin.000001',
MASTER_LOG_POS=460;
EOF
方法2
mysql> ?CHANGE MASTER TO
-> ?MASTER_HOST='172.20.100.134',
-> ?MASTER_PORT=3306,
-> ?MASTER_USER='rep',
-> ?MASTER_PASSWORD='123456',
-> ?MASTER_LOG_FILE='mysql-bin.000004',
-> ?MASTER_LOG_POS=536;
Query OK, 0 rows affected (0.10 sec)
啟動同步開關(guān)
[root@localhost backup]# mysql -uroot -p -S /data/3307/mysql.sock -e "start slave;"
[root@localhost backup]# mysql -uroot -p -S /data/3307/mysql.sock -e "show slave status\G"
Enter password:
*************************** 1. row ***************************
Slave_IO_State: Waiting for master to send event
Master_Host: 172.20.100.134
Master_User: rep
Master_Port: 3306
Connect_Retry: 60
Master_Log_File: mysql-bin.000004
Read_Master_Log_Pos: 696
Relay_Log_File: relay-bin.000002
Relay_Log_Pos: 411
Relay_Master_Log_File: mysql-bin.000004
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
Replicate_Do_DB:
Replicate_Ignore_DB: mysql
Replicate_Do_Table:
Replicate_Ignore_Table:
Replicate_Wild_Do_Table:
Replicate_Wild_Ignore_Table:
Last_Errno: 0
Last_Error:
Skip_Counter: 0
Exec_Master_Log_Pos: 696
Relay_Log_Space: 560
Until_Condition: None
Until_Log_File:
Until_Log_Pos: 0
Master_SSL_Allowed: No
Master_SSL_CA_File:
Master_SSL_CA_Path:
Master_SSL_Cert:
Master_SSL_Cipher:
Master_SSL_Key:
Seconds_Behind_Master: 0 ? ? #和主庫比同步延遲的秒數(shù),這個參數(shù)很重要。
Master_SSL_Verify_Server_Cert: No
Last_IO_Errno: 0
Last_IO_Error:
Last_SQL_Errno: 0
Last_SQL_Error:
查看狀態(tài)
[root@localhost backup]# mysql -uroot -p'123456' -S /data/3307/mysql.sock -e "show slave status\G" | egrep "Slave_IO_Running|Slave_SQL_Running"
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
如果報錯1007
[root@localhost ~]# mysql -uroot -p -S /data/3307/mysql.sock -e "stop slave;"
[root@localhost ~]# mysql -uroot -p -S /data/3307/mysql.sock -e "set global sql_slave_skip_counter =1 ;" 1就是忽略1次更新,不推薦
[root@localhsot ~]# mysql -uroot -p -S /data/3307/mysql.sock -e "start slave;"
不加班在工作時間輕松配置從庫
在服務器壓力比較小的時候備份
1、鎖表備份全備一份
2、鎖表前后取得show master status值記錄日志里
binlog-ignore-db=information_schema
binlog-ignore-db=mysql
主從庫授權(quán)
在生產(chǎn)環(huán)境以下參考
主庫(提供寫服務) ? ? 用戶user ?密碼user123 ip 172.20.100.1 port 3306
從庫(提供讀服務) ? ? 用戶user ?密碼user123 ip 172.20.100.2 port 3306
總結(jié)
以上是生活随笔為你收集整理的oracle数据库倒顺,mysql常用命令的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 获取 docker 容器(contain
- 下一篇: Django syncdb mysql