oracle数据库倒顺,mysql常用命令
mysql
文件系統管理數據存在的問題
1、數據冗余性和不一致性
2、數據訪問
3、數據相對獨立
4、完整性和原子性問題
5、并發訪問異常
6、安全性問題
數據庫:指的是以一定方式儲存在一起,能為多個用戶共享,具有盡可能小的冗余度的特點,是與應用程序彼此獨立的數據集合。
1、實現數據共享
2、減少數據的冗余度
3、數據實現集中控制
4、數據的一致性
5、故障恢復
關系式數據庫
DBMS 數據庫管理系統
軟件、管理數據庫
層次模型 ?網狀模型 ?關系模型
RDBMS 關系數據庫管理系統 ?DBMS = RDBMS
E-R模型
ERM概念 實體關系建模
實體:實體就是指的數據對象
聯系:聯系代表一個或多個實體之間的聯系
屬性:實體的某一特性
超市: 超市名 ?超市地址
商品: 商品名稱 商品價格
員工: 性名 性別 編號
銷售: 商品 超市 銷售量
創建數據庫 ?修改數據庫
SQL語句 ?結構化查詢語言
大型共享數據庫數據的關系模型
SQL發展歷史
System R ? DB2 ?SQL-SERVER ?T-SQL
ORACLE ?PL/SQL ? ? ANSI
SQL 分類
數據操作語言DML:用于操作數據庫對象中所包含的數據。
例如|:INSERT, ?UPDATE, ?DELETE語句。
數據定義語言DDL: 用于定義和管理數據對象,包括數據庫,數據表等。
例如:CREATE, ?DROP刪除 ?ALTER修改數據表等。
數據查詢語言DQL:用于查詢數據庫對象中所包含的數據。
例如: SELECT
數據控制語言DCL:是用來管理數據庫的語言,包括管理權限及數據更改。
例如: GRANT授權 ?REVOKE刪除權限
關系結構
文件系統的邏輯關系
上層:文件系統中的數據,體現成文件的形式。
底層:數據存在硬盤的數據塊
中間層:文件系統
數據庫的邏輯關系
上層:數據表
底層:文件
中間層:能夠將文件邏輯成表的組件,存儲引擎
存儲引擎
MyISAM 特點:最常見,查詢速度較快 ?缺點:不支持事務,行級鎖和外鍵約束功能
事務:一段SQL語句的批處理,具有原子性(要么全部SQL語句都執行成功,要么全部SQL語句都執行不成功)
鎖
行級鎖:InnoDB數據不能修改行級鎖定的數據,其它的可以修改
表級鎖:MyISAM 直接鎖定整張表,要么都能修,要么都不能修改
頁級鎖:DBD 鎖定一張表格的相鄰的幾組數據
約束:
域約束:某個單元格填寫某種類型的數據
外建約束:約束數據正確性
InnoDB
Memory基本內存的引擎,速度快 缺點:不能永遠保存數據
數據庫
1、只支持一種存儲引擎 ORACLE
2、支持多種存儲引擎 ?MYSQL
數據庫結構分為兩大類
存儲管理器
權限及完整性管理器
事務管理器
文件管理器
緩沖區管理器
查詢管理器
DDL DML
查詢執行引擎
數據庫工作模式
單進程多線程模式
守護線程
應用線程
優化數據庫性能
緩存
線程重用
硬件
SMP 對稱多處理器結構
MYSQL 版本
社區版 企業版 集群版
[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、停止數據庫
2、修改主配件文件 vim /etc/my.cnf 加入 (skip-grant-tables 跳過授權表)
3、mysql> update mysql.user set password=password('123') where user='root'; 修改密碼
4、exit 數據庫
5、刪除授權操作skip-grant-tables
6、service mysqld restart 重啟并用新密碼測試登錄
登陸 mysql -uroot -p
多實例修改密碼
1、停止數據庫
2、修改主配件文件 vim /etc/my.cnf 加入 (skip-grant-tables 跳過授權表)
3、mysql> update mysql.user set password=password('123') where user='root'; 修改密碼
4、exit 數據庫
5、刪除授權操作skip-grant-tables
6、service mysqld restart 重啟并用新密碼測試登錄
登陸mysql -u root -p -S /data/3306/mysql.sock
mysql> select user,host from mysql.user; 查看數據庫用戶
mysql> show databases; ? #查看數據庫
mysql> select databases(); #查看是否進入某一個數據庫
mysql> use mysql; ? ? ?#切換數據表
mysql> system whoami #切換到linux下
mysql> system ls /
mysql> show tables; ? #查看數據表
使用help查詢命令
#創建數據庫
mysql> create database you;
Query OK, 1 row affected (0.00 sec)
#顯示數據庫
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)
查看數據庫字符集
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)
創建you_gbk數據庫字符集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)
創建you_utf8數據庫字符集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字符集包括字符集和校對規則
字符集是定義mysql字符串存儲方式,校對規則定義mysql比較字符串的方式。
刪除數據庫
mysql> drop database test;
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 ? ? ? ? ? ? |
| ? ? ?| localhost.localdomain |
| root | localhost.localdomain |
+------+-----------------------+
5 rows in set (0.00 sec)
連接數據庫
mysql> use mysql
#查看是否進入數據庫
mysql> select database();
+------------+
| database() |
+------------+
| mysql ? ? ?|
+------------+
1 row in set (0.00 sec)
#查看數據庫用戶
mysql> select user();
+----------------+
| user() ? ? ? ? |
+----------------+
| root@localhost |
+----------------+
1 row in set (0.00 sec)
查看數據庫中的表
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數據庫有多少張表
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)
創建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';
用戶授權,先創建用戶再授權用戶
mysql> create user 'xiaoyou'@'localhost' identified by '123456';
mysql> grant all on *.* to 'xiaoyou'@'localhost';
Query OK, 0 rows affected (0.00 sec)
查看用戶權限 USAGE只有連接的權限
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
給某個數據庫授權
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)
創建拉丁字符集數據庫 ?mysql默認字符集
mysql> create database data0;
Query OK, 1 row affected (0.00 sec)
linux系統字符集 vim /etc/sysconfig/i18n ?LANG="zh CN.UTF-8"
創建utf8字符集數據庫
mysql> create database data2 default character set utf8 collate utf8_general_ci;
Query OK, 1 row affected (0.00 sec)
創建gbk字符集數據庫
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;
直接創建用戶和授權
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)
收回授權
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)
查看數據庫授權表
mysql> desc mysql.user;
主從mysql授權
生產環境主庫用戶的授權
grant select, insert, update, delete on blog.* to blog@'172.20.100.%' i dentified by '123456';
生產環境從庫用戶的授權
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
創建gbk數據庫
CREATE DATABASE anni_bgk CHARACTER SET gbk collate gbk_chinese_ci;
建立測試表test
命令: create talbe test ( .....)
mysql數據庫類型
1、INT[(M)]型:正常大小整數類型
2、DOUBLE[(M,D)] [ZEROFILL]型,正常大小雙精密浮點數字類型
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)
查看表結構
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)
插入數據
命令: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數據庫臨時備份
[root@localhost mysql]# mysqldump -uroot -p'root' -P 3306 -S /var/lib/mysql/mysql.sock ?-B you > /tmp/you_bak.sql
查看備份發數據庫內容
[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)
兩張表條件關聯查詢
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)
修改表中的數據
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)
刪除表中的數據
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,不然出現亂碼
改服務端字符集
更改my.cnf參數
[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命令行執行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
備份數據庫
mysqldump -uroot -p'root' -S /var/lib/mysql/mysql.sock -B user1 > /tmp/user1_bak.sql
還原數據庫
mysql -uroot -p'root' -S /var/lib/mysql/mysql.sock -B user1 < /tmp/user1_bak.sql
提示:
1、文件本文字符集要正確gb2312
2、文件里加入set names gbk;
3、恢復時執行mysql --defaul-character-set
mysql字符集介紹
GBK 定長 雙字節 不是國際標準,支持的系統不少
UTF-8 非定長 1-4字節 廣泛支持,MYSQL也使用UTF-8
latin1 MYSQL默認字符集
查看默認節符集
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參數
[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]模塊下添加字符集配置,重啟生效生,創建數據庫和表默認都是這個設置的字符集。
2、客戶端字符集設置,set names gbk; 這樣可以確保插入后的中文 ,不出現亂碼,對執行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 ?#數據庫字符集 配置文件或建庫建表指定 ?|
| character_set_filesystem | binary ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? |
| character_set_results ? ?| gbk ? #返回結果字符集,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是數據庫 test是數據庫里的表
+----+--------+------+
| 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)
備份數據庫
普通備份
[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
備份庫和表結構
[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;
讓備份結果輸出少一些 ?--compact
[root@localhost tmp]# mysqldump -uroot -p'root' -S /var/lib/mysql/mysql.sock ?--compact -d data1 >/tmp/aaa.sql
恢復數據庫
1、source 命令恢復
用source加linux命令行的路徑直接恢復mysql數據
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
假定開發人員讓我們插入數據到數據庫,可能是郵件發的,內容可能是字符串或都是下面的文件,帶中文
sql文里沒有use data1的時候,在導入時路徑就必須指定數據庫名
[root@localhost tmp]# mysql -uroot -p'root' -S /var/lib/mysql/mysql.sock ?< /tmp/aa.sql
mysql -e實現非交互式對話
[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狀態
[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參數
[root@localhost tmp]# mysql -uroot -p'root' -S /var/lib/mysql/mysql.sock ?-e "show variables"
查看mysql狀態
[root@localhost tmp]# mysql -uroot -p'root' -S /var/lib/mysql/mysql.sock ?-e "show status"
查看mysql各個查詢狀態
[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
查看引擎的緩沖區
[root@localhost tmp]# mysql -uroot -p'root' -S /var/lib/mysql/mysql.sock ?-e "show variables;"|grep key_buffer
key_buffer_size8384512
設置緩沖區
[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 表示不創建用戶家目錄
查看創建的用戶
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單實例清除
生產環境多實例 內存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同步的必須權限,此處不要授權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)
生產環境時,操作主從復制,需要申請停機時間。鎖表會影響業務
鎖表主庫
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 添加參數比如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
如果需要停掉從庫,執行以下命令
[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)
啟動同步開關
[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 ? ? #和主庫比同步延遲的秒數,這個參數很重要。
Master_SSL_Verify_Server_Cert: No
Last_IO_Errno: 0
Last_IO_Error:
Last_SQL_Errno: 0
Last_SQL_Error:
查看狀態
[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
主從庫授權
在生產環境以下參考
主庫(提供寫服務) ? ? 用戶user ?密碼user123 ip 172.20.100.1 port 3306
從庫(提供讀服務) ? ? 用戶user ?密碼user123 ip 172.20.100.2 port 3306
總結
以上是生活随笔為你收集整理的oracle数据库倒顺,mysql常用命令的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 获取 docker 容器(contain
- 下一篇: Django syncdb mysql