新聞中心
數(shù)據(jù)庫的版本
1.社區(qū)版
2.企業(yè)版
3.集群版
數(shù)據(jù)庫的安裝
1. 專用軟件包管理器(二進制)
deb、rpm等
mysql MySQL客戶端程序和共享庫
mysql-server MySQL服務(wù)器需要的相關(guān)程序
2. 源代碼軟件包(編譯安裝)
configure、cmake
數(shù)據(jù)庫常用的配置選項
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql ----指定殘可安裝路徑(默認的就是/usr/local/mysql)
-DMYSQL_DATADIR=/data/mysql ----mysql的數(shù)據(jù)文件路徑
-DSYSCONFDIR=/etc ----配置文件路徑
-DWITH_INNOBASE_STORAGE_ENGINE=1 ----使用INNOBASE存儲引擎
-DWITH_ARCHIVE_STORAGE_ENGINE=1 ----常應(yīng)用于日志記錄和聚合分析,不支持索引
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 ----黑洞存儲引擎
-DWITHOUT_EXAMPLE_STORAGE_ENGINE=1 編譯過程中取消一些存儲引擎指令介紹
-DWITHOUT_FEDERATED_STORAGE_ENGINE=1
-DWITHOUT_PARTITION_STORAGE_ENGINE=1
-DWITH_READLINE=1 ----支持批量導入mysql數(shù)據(jù)
-DWITH_SSL=system ----mysql支持ssl會話,實現(xiàn)基于ssl的數(shù)據(jù)復(fù)
-DWITH_ZLIB=system ----壓縮庫
-DWITH_LIBWRAP=0 ----是否可以基于WRAP實現(xiàn)訪問控制
-DMYSQL_TCP_PORT=3306 ----默認端口
-DMYSQL_UNIX_ADDR=/tmp/mysql.sock ----默認套接字文件路徑
-DENABLED_LOCAL_INFILE=1 ----是否啟用LOCAL_INFILE功能
-DEXTRA_CHARSETS=all ----是否支持額外的字符集
-DDEFAULT_CHARSET=utf8 ----默認編碼機制
-DDEFAULT_COLLATION=utf8_general_ci ----設(shè)定默認語言的排序規(guī)則
-DWITH_DEBUG=0 ----DEBUG功能設(shè)置
-DENABLE_PROFILING=1 ----性能分析功能是否啟用
3. 服務(wù):mysqld
4. 端口:3306
5. 主配置文件:/etc/my.cnf
6. 腳本:mysql_install_db
7. mysqld_safe
8. 數(shù)據(jù)目錄:/var/lib/mysql
9. 套接字文件:/var/lib/mysql/mysql.sock
10. 當意外關(guān)閉數(shù)據(jù)庫時,再開啟時假如開啟不了,找到這個,刪除再啟動
11. 進程文件:/var/run/mysqld/mysqld.pid
登錄及退出mysql環(huán)境
a) 設(shè)置密碼 mysqladmin -uroot password ‘123’
b) 登錄 mysql -u 用戶名 -p
-p用戶密碼
-h登陸位置(主機名或ip地址)
-P端口號(3306改了就不是了)
-S套接字文件(/var/lib/mysql/mysql.sock)
c) 退出 exit
d) 創(chuàng)建登錄用戶 create user 用戶名@’%’ identified by ‘密碼’
e) 修改密碼 set password=password(‘新密碼’)
setpassword for用戶@登錄位置=password(‘新密碼’) — — — root用戶為其他用戶找回密碼
當管理員把自己密碼忘記了,怎么找回???
1)關(guān)閉數(shù)據(jù)庫
2)修改主配置文件(/etc/my.cnf)<------ skip-grant-tables
3)啟動數(shù)據(jù)庫
4)空密碼登錄并修改密碼
update mysql.user setpassword=password(‘新密碼’) where user=’root’;
5)刪除skip-grant-tables,重啟數(shù)據(jù)庫驗證新密碼
SQL語句
關(guān)于庫的操作:
Mysql命令 | 功能 |
show databases; | 查看服務(wù)器中當前有哪些數(shù)據(jù)庫 |
use 數(shù)據(jù)庫名; | 選擇所使用的數(shù)據(jù)庫 |
create database 數(shù)據(jù)庫名; | 創(chuàng)建數(shù)據(jù)庫 |
drop database 數(shù)據(jù)庫名; | 刪除指定的數(shù)據(jù)庫 |
關(guān)于表的操作
MySQL命令 | 功能 |
create table 表名 (字段1 類型1,...); | 在當前數(shù)據(jù)庫中創(chuàng)建數(shù)據(jù)表 |
show tables; | 顯示當前數(shù)據(jù)庫中有哪些數(shù)據(jù)表 |
describe 表名; | 顯示當前或指定數(shù)據(jù)庫中指定數(shù)據(jù)表的結(jié)構(gòu)(字段)信息 |
drop table 表名; | 刪除當前或指定數(shù)據(jù)庫中指定的數(shù)據(jù)表 |
alter table舊表名 rename新表名; | 修改數(shù)據(jù)表的名稱 |
alter table表名 modify字段 類型; | 修改字段的類型 |
alter table表名 change舊字段名 新字段名 類型; | 修改字段 |
alter table表名 add字段 類型(first/after) | 增加字段 |
alter table表名 drop字段 | 刪除字段 |
MySQL命令 | 功能 |
insert into表名(字段1,字段2,……) values(字段1的值, 字段2的值,……); | 向數(shù)據(jù)表中插入新的記錄 |
update 表名 set 字段名 =新數(shù)據(jù) where 條件表達式; | 修改、更新數(shù)據(jù)表中的記錄 |
select 字段名1,字段名2……from 表名 where 條件表達式; | 從數(shù)據(jù)表中查找符合條件的記錄 |
select * from 表名; | 顯示當前數(shù)據(jù)庫的表中的記錄 |
delete from 表名 where 條件表達式; between...and... | 在數(shù)據(jù)表中刪除指定的記錄 指定范圍 |
delete from 表名; | 將當前數(shù)據(jù)庫表中記錄清空 |
注:庫和表的刪除用drop,記錄刪除用delete
權(quán)限
grant權(quán)限1,權(quán)限2,...... on 數(shù)據(jù)庫.數(shù)據(jù)表 to 用戶@登錄位置 (identified by ‘密碼’);
revoke取消的權(quán)限1,取消的權(quán)限2,...... on 數(shù)據(jù)庫.數(shù)據(jù)表 from 用戶@登錄位置;
showgrants for用戶@登錄位置;
備份和還原
冷備份:把數(shù)據(jù)庫關(guān)閉,離線備份(使用cp、tar等命令直接備份數(shù)據(jù)庫所存放的目錄)
FRM結(jié)構(gòu)
MYI 索引
MYD 數(shù)據(jù)
快照備份:(利用邏輯卷)
邏輯備份:
mysqldump
備份:mysqldump -u 用戶名 -p 數(shù)據(jù)庫名 > /備份路徑/備份文件名(備份單個數(shù)據(jù)庫)
mysqldump-u用戶名 -p 數(shù)據(jù)庫名 表名 > /備份路徑/備份文件名(備份數(shù)據(jù)表)
--databases庫1,庫2 (此時還原--->mysql< 備份文件)
--all-databases—備份服務(wù)器中的所有數(shù)據(jù)庫內(nèi)容
還原:mysql 數(shù)據(jù)庫 < 備份文件
mysqlhotcopy
備份:mysqlhotcopy--flushlog -u=’用戶’ -p=’密碼’--regexp=正則 備份目錄
還原:cp-rpf 備份目錄 數(shù)據(jù)目錄(/var/lib/mysql)
補充的備份機制
1.日志備份
>mysqlshow global variables like ‘%log%’
列出mysql中和日志相關(guān)的變量
錯誤日志
服務(wù)器啟動和關(guān)閉時的信息
服務(wù)器運行過程中的錯誤信息
從服務(wù)器啟動從服務(wù)器進程時產(chǎn)生的信息
log-error 錯誤日志的路徑
一般日志(不啟用)
記錄用戶對數(shù)據(jù)庫的查詢操作
general-log=ON 啟動一般查詢?nèi)罩?/p>
log=ON 全局日志開關(guān)
log-output 日志的記錄類型
慢查詢?nèi)罩?/p>
記錄需要較長時間的查詢操作
log-slow-queries=保存路徑 啟動慢查詢?nèi)罩?,并設(shè)置個路徑
二進制日志
所有對數(shù)據(jù)庫狀態(tài)更改的操作(create、drop、update等)
log-bin=位置 啟動二進制日志
>mysql show binary logs 查看當前使用的二進制日志
>mysqlshow binlog events in ‘二進制日志(mysql-bin.000001)’ 查看二進制日志的內(nèi)容
還原:(mysqlbinlog)
按時間還原:
mysqlbinlog --start-datetime ‘YY-MM-DD HH:MM:SS’--stop-datetime ‘YY-MM-DD HH:MM:SS’二進制日志 | mysql(-urot -p)
按文件大小還原:
--start-position
--stop-position
事務(wù)日志:記錄事務(wù)相關(guān)的日志信息
中繼日志:記錄從服務(wù)器的備份信息
2.多機備份
主從配置:實時備份
主主配置:(配置了2遍的主從)實時備份、負載均衡
多從一主:實時備份(更多的備份節(jié)點)
多主一從:實時備份、節(jié)約成本
實驗
1.創(chuàng)建mysql的登錄用戶yzh可以登錄mysql服務(wù)器
1.創(chuàng)建登錄用戶
# yum install mysql-server –y
# servicemysqld start
在另一臺虛擬機上測試
創(chuàng)建的用戶為自己更改密碼
root用戶為其他用戶找回密碼
root找回自己的密碼并修改
數(shù)據(jù)庫的增、刪、改、查實驗
創(chuàng)建數(shù)據(jù)庫
創(chuàng)建數(shù)據(jù)表
復(fù)雜一點的,,,
插入數(shù)據(jù)
將表a2的數(shù)據(jù)復(fù)制到表a1
刪除數(shù)據(jù)庫
刪除數(shù)據(jù)表
刪除表里的數(shù)據(jù)記錄
刪除年齡在23-25之間的
修改表中的數(shù)據(jù)
修改數(shù)據(jù)表的名稱
修改數(shù)據(jù)表的字段類型
修改數(shù)據(jù)表的字段
添加字段
刪除字段
給用戶授權(quán)
1.給用戶全部權(quán)限
取消yzh用戶的刪除庫、表、表中數(shù)據(jù)的權(quán)限
查看用戶的權(quán)限
2.備份和還原數(shù)據(jù)庫文件
單個備份命令mysqldump -uroot -p --databases ab > /ab.sql
多個數(shù)據(jù)庫的備份,數(shù)據(jù)庫之間用空格隔開
mysqldump -uroot -p --databases aa ab> /1.sql
1.把數(shù)據(jù)庫aa備份到/root目錄下
2.模擬數(shù)據(jù)庫aa丟失(刪除數(shù)據(jù)庫aa)
3.還原
注:此處可以會報錯,如下:
解決方法為:
A、修改配置文件添加 skip-grant-tables 跳過密碼驗證。進入mysql后再修改root密碼,
B、刪除配置文件中的skip-grant-tables ,重啟服務(wù)用新密碼再進入!
1.備份多個數(shù)據(jù)庫(--databases)
2.還原
1.備份有規(guī)則的數(shù)據(jù)庫
2.模擬數(shù)據(jù)庫刪除
3.還原
5.關(guān)于二進制日志還原(此處實驗都沒有成功,以后再試)
開啟二進制日志
查看二進制日志文件
按時間還原:
1.如果數(shù)據(jù)庫中的bb庫被刪,需要還原
2.查看二進制日志內(nèi)容
3.還原并查看
按文件大小還原:
還原到bb庫被刪除的數(shù)據(jù)狀態(tài)
1.查看bb庫被刪除前后的文件大小
2.還原并查看
6.主從備份
前提條件:安裝了mysql,開啟了二進制日志
在主服務(wù)器上授權(quán),從服務(wù)器保存授權(quán)的信息
之后在從服務(wù)器會產(chǎn)生授權(quán)信息文件
開啟從服務(wù)器start slave,并查看
測試
7.主主備份(直接將實驗6的主從反向再配置一遍,也可做主主備份),本實驗增加的參數(shù)只是為了提高效率,在數(shù)據(jù)庫數(shù)據(jù)龐大的情況下,效果顯著。
1.以1為主,2為從配置一遍主從
a) 在主配置文件中配置一下(開啟二進制日志和其他內(nèi)容)
b) 在2上做相同的配置
c) 啟動服務(wù)器
d) 在主服務(wù)器(1)上授權(quán)
e) 在從服務(wù)器(2)上保存授權(quán)信息
2.以2為主,1為從配置一遍主從
a) 在主服務(wù)器(2)上授權(quán)
b) 在從服務(wù)器(1)上保存授權(quán)信息
3.開啟從服務(wù)器start slave,并查看
4.測試
8.多從一主
1.主服務(wù)器配置
a) 開啟二進制日志,并開啟mysql
b) 在主服務(wù)器上授權(quán)
2.從服務(wù)器配置
a) 開啟二進制日志,并啟動mysql
b) 保存授權(quán)信息
c) 在另一臺從服務(wù)器上做相同的配置
d)測試
9.多主一從
1.主服務(wù)器配置
a) 開啟二進制日志,啟動服務(wù)
b) 授權(quán)
c) 在主服務(wù)器2上做相同的操作
2.從服務(wù)器操作
a) 對主配置文件操作
b) 初始化數(shù)據(jù)庫,生成目錄mysqla,mysqlb
c) 設(shè)置mysqla,mysqlb目錄及以下文件的屬主的權(quán)限為mysql(防止出現(xiàn)權(quán)限問題)
d) 啟動從服務(wù)器線程
e) 登錄并保存授權(quán)信
3.測試
10.讀寫分離
環(huán)境部署:
主服務(wù)器——192.168.115.191
從服務(wù)器——192.168.115.193
中間件服務(wù)器——192.168.115.192
中間件:一種提供在不同技術(shù)、不同的軟件之間共享資源的程序
tomcat weblogic
數(shù)據(jù)庫的中間件:mysql proxy (官方版本) 性能低,需要lua腳本
atlas性能低,相應(yīng)時間長
amoeba陳思儒研發(fā)的
一.先搭建一個主從關(guān)系的服務(wù)器
1.在主、從服務(wù)器上安裝mysql mysql-server
2.開啟二進制日志
3.在主服務(wù)器上授權(quán),從服務(wù)器上保存授權(quán)信息,并開啟從服務(wù)線程。
Master服務(wù)器
Slave服務(wù)器
二.配置讀寫分離 (192.168.115.192中間件服務(wù)器上配置)
1.安裝gcc環(huán)境(amoeba需要源碼安裝)
2.拷貝第三方軟件,創(chuàng)建單獨的目錄
3.先安裝jdk(amoeba是由java語言編寫的,所以先安裝jdk),配置java環(huán)境
聲明用java寫出來的程序如何調(diào)用(/etc/profile)手動添加內(nèi)容
4.安裝amoeba
a) 解壓
b) 配置amoeba這個軟件
由于只提供了一個服務(wù)器模板,需要自己復(fù)制另一個填寫關(guān)于讀的(直接復(fù)制64行到109行,插入在109行之后)
修改下端的讀寫服務(wù)器
c)啟動amoeba
修改一下啟動腳本 vim /usr/local/amoeba/bin/amoeba
先在主服務(wù)器191上開啟amoeba用戶的授權(quán)(從服務(wù)器自動同步)
再在193的amoeba服務(wù)器上開啟amoeba服務(wù)
nohup bash -x /usr/local/amoeba/bin/amoeba&把這個放到后臺 退出終端也可以繼續(xù)運行
ps aux | grep amoeba 然后查看一下運行的程序查看到的話就說明程序已經(jīng)運行了起來
三.測試(安裝一個MySQL 軟件包 才可以連接)
啟動amoeba端的mysql服務(wù) service mysqld start
使用配置文件中amoeba配置中的用戶名和密碼登錄amoeba端的mysql服務(wù)
關(guān)閉從服務(wù)器的從同步功能
在主、從服務(wù)器上創(chuàng)建表a1,在主服務(wù)器的表中插入數(shù)據(jù)
之后在客戶端登錄測試::::
讀取池的效果:
寫入池效果
以上測試純粹為了實驗效果,在實際生產(chǎn)中,主從開啟,主服務(wù)器上寫入的數(shù)據(jù)也會同步到從服務(wù)器中。。。。。。
另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)cdcxhl.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機、免備案服務(wù)器”等云主機租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價比高”等特點與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。
分享名稱:mysql數(shù)據(jù)庫多種備份及讀寫分離搭建-創(chuàng)新互聯(lián)
網(wǎng)站地址:http://www.dlmjj.cn/article/igecj.html