MySQL配置學(xué)習(xí)

安裝與配置

使用apt 安裝 mysqlapt install mysql度液,其中二進(jìn)制文件放置在/usr/bin/mysql湾碎,配置文件在/etc/mysql宙攻。
打開配置文件vim /etc/mysql/mysql.conf.d/mysqld.cnf,可以看到默認(rèn)的參數(shù)設(shè)置:

[mysqld]
user            = mysql
pid-file        = /var/run/mysqld/mysqld.pid
socket          = /var/run/mysqld/mysqld.sock
port            = 3306
basedir         = /usr
datadir         = /var/lib/mysql
tmpdir          = /tmp
lc-messages-dir = /usr/share/mysql

對應(yīng)了mysql啟動的一些參數(shù)介褥。

在這里進(jìn)行一些修改座掘,使其能夠通過外部ip進(jìn)行訪問:

  • 注釋掉bind-address,或者修改為0.0.0.0
  • 本地進(jìn)入mysql后選擇mysql庫呻顽,執(zhí)行update user set host='%' where user='root';雹顺,使root用戶可以在任何地方登陸
  • 重啟mysql service mysql restart

引擎

InnoDB

InnoDB是MySQL的默認(rèn)引擎,主要擁有以下幾個功能:

  • ACID事務(wù)
  • 存儲過程
  • 視圖
  • 行級鎖定
  • 支持外鍵

應(yīng)用場景:

  • 以INSERT廊遍、UPDATE為主的應(yīng)用嬉愧。
  • 更新密集的表。InnoDB存儲引擎特別適合處理多重并發(fā)的更新請求喉前。
  • 事務(wù)没酣。InnoDB存儲引擎是支持事務(wù)的標(biāo)準(zhǔn)MySQL存儲引擎王财。
  • 自動災(zāi)難恢復(fù)。與其它存儲引擎不同裕便,InnoDB表能夠自動從災(zāi)難中恢復(fù)绒净。
  • 外鍵約束。MySQL支持外鍵的存儲引擎只有InnoDB偿衰。

注意點(diǎn):

  • 對于InnoDB每一條SQL語言都默認(rèn)封裝成事務(wù)挂疆,自動提交,這樣會影響速度下翎,所以最好把多條SQL語言放在begin和commit之間缤言,組成一個事務(wù)。
  • InnoDB是聚集索引视事,數(shù)據(jù)文件是和索引綁在一起的胆萧,必須要有主鍵,通過主鍵索引效率很高俐东。但是輔助索引需要兩次查詢跌穗,先查詢到主鍵,然后再通過主鍵查詢到數(shù)據(jù)虏辫。因此蚌吸,主鍵不應(yīng)該過大,因?yàn)橹麈I太大砌庄,其他索引也都會很大套利。
  • 行級鎖只在涉及對索引字段操作的情況下,其余情況都會鎖全表鹤耍。

MyISAM

  • 相比于InnoDB肉迫,MyISAM類型的表強(qiáng)調(diào)的是性能,其執(zhí)行數(shù)度比InnoDB類型更快稿黄,但是不提供事務(wù)支持喊衫。
  • 如果執(zhí)行大量的SELECT,MyISAM是更好的選擇杆怕。
  • AUTO_INCREMENT性能上MyISAM更快族购,并且支持復(fù)合主鍵自增。
  • MyISAM是非聚集索引陵珍,數(shù)據(jù)文件是分離的寝杖,索引保存的是數(shù)據(jù)文件的指針。主鍵索引和輔助索引是獨(dú)立的互纯。

區(qū)別

  • InnoDB支持外鍵瑟幕,而MyISAM不支持。對一個包含外鍵的InnoDB表轉(zhuǎn)為MYISAM會失敗只盹;
  • InnoDB不保存表的具體行數(shù)辣往,執(zhí)行select count(*) from table時需要全表掃描。而MyISAM用一個變量保存了整個表的行數(shù)殖卑,執(zhí)行上述語句時只需要讀出該變量即可站削,速度很快;
  • Innodb不支持全文索引孵稽,而MyISAM支持全文索引许起,查詢效率上MyISAM要高;

主從同步

主服務(wù)器配置

首先修改主從服務(wù)器的配置文件

vim /etc/mysql/mysql.conf.d/mysqld.cnf
server-id               = 128 #這個通常設(shè)置為ip最后一段
log_bin                 = /var/log/mysql/mysql-bin.log #二進(jìn)制文件路徑
binlog_do_db            = test_copy #設(shè)置要同步的數(shù)據(jù)庫

在主服務(wù)器上添加一個sync用戶用于從數(shù)據(jù)庫訪問
GRANT REPLICATION SLAVE ON *.* to 'sync'@'%' identified by 'sync_pass';
然后重啟服務(wù)器
使用SHOW MASTER STATUS查看主服務(wù)器狀態(tài):

+------------------+------------+----------------+--------------------+---------------------+
| File             |   Position | Binlog_Do_DB   | Binlog_Ignore_DB   | Executed_Gtid_Set   |
|------------------+------------+----------------+--------------------+---------------------|
| mysql-bin.000002 |        154 | test_copy      |                    |                     |
+------------------+------------+----------------+--------------------+---------------------+

從服務(wù)器配置

修改配置:

server-id=1

然后配置同步參數(shù)

change master to MASTER_HOST='192.168.88.128', MASTER_USER='sync',MASTER_PASSWORD='sync_pass';

啟動從數(shù)據(jù)庫服務(wù)

START SLAVE
SHOW SLAVE STATUS\G
***************************[ 1. row ]***************************
Slave_IO_State                | Waiting for master to send event
Master_Host                   | 192.168.88.128
Master_User                   | sync
Master_Port                   | 3306
Connect_Retry                 | 60
Master_Log_File               | mysql-bin.000002
Read_Master_Log_Pos           | 154
Relay_Log_File                | DESKTOP-0ODM788-relay-bin.000002
Relay_Log_Pos                 | 320
Relay_Master_Log_File         | mysql-bin.000002
Slave_IO_Running              | Yes
Slave_SQL_Running             | Yes

這里的關(guān)鍵點(diǎn)為Slave_IO_RunningSlave_SQL_Running都需要為Yes菩鲜,一個為No則未配置成功街氢。
如需修改從服務(wù)器的配置需要先停掉同步STOP SLAVE,然后使用change master to master_log_file='mysql-bin.000002',master_log_pos=154;進(jìn)行修改睦袖。

確認(rèn)同步成功:
主服務(wù)器執(zhí)行

mysql root@localhost:test_copy> select * from t_test
+-----------+
|   test_id |
|-----------|
|      1111 |
+-----------+

從服務(wù)器執(zhí)行

mysql (none)@localhost:test_copy> select * from t_test
+---------+
| test_id |
+---------+
| 1111    |
+---------+

主服務(wù)器執(zhí)行插入操作

mysql root@localhost:test_copy> INSERT INTO t_test VALUES (1)
Query OK, 1 row affected
Time: 0.011s

從服務(wù)器查詢

mysql (none)@localhost:test_copy> select * from t_test
+---------+
| test_id |
+---------+
| 1111    |
| 1       |
+---------+
2 rows in set

數(shù)據(jù)備份

使用mysqldumps進(jìn)行數(shù)據(jù)備份操作:

mysqldump -uroot --all-databases >/tmp/all.sql #導(dǎo)出所有數(shù)據(jù)庫
mysqldump -uroot --databases dbname1 dbname2 >/tmp/all.sql #導(dǎo)出特定的數(shù)據(jù)庫

數(shù)據(jù)恢復(fù)mysql -u root -p <backup.sql
或者登陸到數(shù)據(jù)庫后使用source backup.sql進(jìn)行還原

分區(qū)表

分區(qū)類型

  • RANGE 分區(qū):基于屬于一個給定連續(xù)區(qū)間的列值,把多行分配給分區(qū)荣刑。
  • LIST 分區(qū):類似于按RANGE分區(qū)馅笙,區(qū)別在于LIST分區(qū)是基于列值匹配一個離散值集合中的某個值來進(jìn)行選擇。
  • HASH分區(qū):基于用戶定義的表達(dá)式的返回值來進(jìn)行選擇的分區(qū)厉亏,該表達(dá)式使用將要插入到表中的這些行的列值進(jìn)行計(jì)算董习。這個函數(shù)可以包含MySQL中有效的、產(chǎn)生非負(fù)整數(shù)值的任何表達(dá)式爱只。
  • KEY分區(qū):類似于按HASH分區(qū)皿淋,區(qū)別在于KEY分區(qū)只支持計(jì)算一列或多列,且MySQL服務(wù)器提供其自身的哈希函數(shù)恬试。必須有一列或多列包含整數(shù)值窝趣。
  • 復(fù)合分區(qū):基于RANGE/LIST 類型的分區(qū)表中每個分區(qū)的再次分割。子分區(qū)可以是 HASH/KEY 等類型训柴。

使用RANGE進(jìn)行分區(qū)

CREATE TABLE t5(id INT,dt DATETIME NOT NULL)
PARTITION BY RANGE (TO_DAYS(dt)) (
    PARTITION p0 VALUES LESS THAN (TO_DAYS('2017-09-01')),
    PARTITION p1 VALUES LESS THAN (TO_DAYS('2017-10-01')),
    PARTITION p2 VALUES LESS THAN (TO_DAYS('2017-11-01')),
    PARTITION p3 VALUES LESS THAN MAXVALUE);

Range需要分區(qū)字段為int

使用LIST進(jìn)行分區(qū)

CREATE TABLE t_partition_range(id INT NOT NULL ,number INT NOT NULL)
PARTITION BY LIST(number)(
    PARTITION p0 VALUES IN  (1),
    PARTITION p1 VALUES IN  (2),
);
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末哑舒,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子幻馁,更是在濱河造成了極大的恐慌洗鸵,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,378評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件仗嗦,死亡現(xiàn)場離奇詭異膘滨,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)稀拐,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,356評論 2 382
  • 文/潘曉璐 我一進(jìn)店門火邓,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事贡翘〉赴” “怎么了?”我有些...
    開封第一講書人閱讀 152,702評論 0 342
  • 文/不壞的土叔 我叫張陵鸣驱,是天一觀的道長泛鸟。 經(jīng)常有香客問我,道長踊东,這世上最難降的妖魔是什么北滥? 我笑而不...
    開封第一講書人閱讀 55,259評論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮闸翅,結(jié)果婚禮上再芋,老公的妹妹穿的比我還像新娘。我一直安慰自己坚冀,他們只是感情好济赎,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,263評論 5 371
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著记某,像睡著了一般司训。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上液南,一...
    開封第一講書人閱讀 49,036評論 1 285
  • 那天壳猜,我揣著相機(jī)與錄音,去河邊找鬼滑凉。 笑死统扳,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的畅姊。 我是一名探鬼主播咒钟,決...
    沈念sama閱讀 38,349評論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼若未!你這毒婦竟也來了盯腌?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 36,979評論 0 259
  • 序言:老撾萬榮一對情侶失蹤陨瘩,失蹤者是張志新(化名)和其女友劉穎腕够,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體舌劳,經(jīng)...
    沈念sama閱讀 43,469評論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡帚湘,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,938評論 2 323
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了甚淡。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片大诸。...
    茶點(diǎn)故事閱讀 38,059評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出资柔,到底是詐尸還是另有隱情焙贷,我是刑警寧澤,帶...
    沈念sama閱讀 33,703評論 4 323
  • 正文 年R本政府宣布贿堰,位于F島的核電站辙芍,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏羹与。R本人自食惡果不足惜故硅,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,257評論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望纵搁。 院中可真熱鬧吃衅,春花似錦、人聲如沸腾誉。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,262評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽利职。三九已至趣效,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間眼耀,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,485評論 1 262
  • 我被黑心中介騙來泰國打工佩憾, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留哮伟,地道東北人。 一個月前我還...
    沈念sama閱讀 45,501評論 2 354
  • 正文 我出身青樓妄帘,卻偏偏與公主長得像楞黄,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子抡驼,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,792評論 2 345

推薦閱讀更多精彩內(nèi)容