国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 數(shù)據(jù)庫 > MySQL > 正文

Mysql 多實(shí)例啟動(dòng)配置詳解

2024-07-24 12:37:48
字體:
供稿:網(wǎng)友

當(dāng)開發(fā)與生產(chǎn)環(huán)境在同一臺(tái)機(jī)器上,或需要在一臺(tái)機(jī)器上部署多套測試環(huán)境時(shí),往往需要同時(shí)起多個(gè)mysqld進(jìn)程,最近幫測試搭環(huán)境的時(shí)候就碰到了這樣的問題.

還是從安裝mysql開始,下載tarball安裝.

安裝mysql,代碼如下:

  1. groupadd mysql 
  2. useradd -g mysql mysql 
  3. cmake . -DCMAKE_INSTALL_PREFIX=/usr/local/mysql5.5.27/  -DMYSQL_DATADIR=/data/mysql  -DWITH_INNOBASE_STORAGE_ENGINE=1  -DMYSQL_TCP_PORT=3306  -DMYSQL_UNIX_ADDR=/var/run/mysql/mysql.sock -DWITH_DEBUG=0 
  4. make && make install 

然后配置my.cnf,從support-files里面拷貝一個(gè)my-medium.cnf到/etc/my.cnf,里面mysqld配置段的內(nèi)容基本是這個(gè)樣子,my.cnf配置,代碼如下:

  1. [mysqld] 
  2. port            = 3306 
  3. socket          = /var/run/mysql/mysql.sock 
  4. skip-external-locking 
  5. key_buffer_size = 16M  
  6. max_allowed_packet = 1M 
  7. table_open_cache = 64 
  8. sort_buffer_size = 512K 
  9. net_buffer_length = 8K 
  10. read_buffer_size = 256K 
  11. read_rnd_buffer_size = 512K 
  12. myisam_sort_buffer_size = 8M 

默認(rèn)mysqld只啟動(dòng)一個(gè)實(shí)例,既然我們的目的是啟動(dòng)多個(gè)mysqld實(shí)例,需要使用mysqld_multi,它是一個(gè)perl腳本,在使用之前,需要給my.cnf加一些料.

my.cnf配置[增加mysqld_mutli],代碼如下:

  1. # mysqld_multi會(huì)讀取這個(gè)配置短的內(nèi)容 
  2. [mysqld_multi]  
  3. mysqld = /usr/local/mysql/bin/mysqld 
  4. mysqladmin = /usr/local/mysql/bin/mysqladmin 
  5. # 第一個(gè)mysqld實(shí)例 
  6. [mysqld1] 
  7. port = 3306 
  8. socket = /var/run/mysql/mysql1.sock 
  9. datadir = /data/mysql1 
  10. general-log-file = /var/log/mysql/error.log 
  11. skip-external-locking 
  12. key_buffer_size = 16M  
  13. max_allowed_packet = 1M 
  14. table_open_cache = 64 
  15. sort_buffer_size = 512K 
  16. net_buffer_length = 8K 
  17. read_buffer_size = 256K 
  18. read_rnd_buffer_size = 512K 
  19. myisam_sort_buffer_size = 8M 
  20. log-bin=mysql-bin 
  21. binlog_format=mixed 
  22. server-id       = 1  
  23. user = mysql 
  24. # 第二個(gè)mysqld實(shí)例 
  25. [mysqld2] 
  26. port = 3307 
  27. socket = /var/run/mysql/mysql2.sock 
  28. datadir = /data/mysql2 
  29. general-log-file = /var/log/mysql/error.log 
  30. skip-external-locking  --Vevb.com 
  31. key_buffer_size = 16M  
  32. max_allowed_packet = 1M 
  33. table_open_cache = 64 
  34. sort_buffer_size = 512K 
  35. net_buffer_length = 8K 
  36. read_buffer_size = 256K 
  37. read_rnd_buffer_size = 512K 
  38. myisam_sort_buffer_size = 8M 
  39. log-bin=mysql-bin 
  40. binlog_format=mixed 
  41. server-id       = 1  
  42. user = mysql 

然后依配置創(chuàng)建mysql運(yùn)行時(shí)文件夾并用mysql_install_db腳本初始化系統(tǒng)庫,代碼如下:

  1. mkdir -p /data/mysql1 /data/mysql2 /var/log/mysql /var/run/mysql 
  2. chgrp mysql /data/mysql* /var/log/mysql /var/run/mysql 
  3. chown mysql /data/mysql* /var/log/mysql /var/run/mysql 
  4. mysql_install_db --datadir=/data/mysql1 --user=mysql 
  5. mysql_install_db --datadir=/data/mysql2 --user=mysql 
  6. mysqld_multi start 1-2 

最后一條命令其實(shí)已經(jīng)將我們配置好的mysqld1和mysqld2啟動(dòng)了,這時(shí)候在進(jìn)程表中應(yīng)該能看到兩個(gè)mysqld進(jìn)程,試著用-P參數(shù)指定端口能分別訪問在/data/mysql1和/data/mysql2下面的兩個(gè)庫,兩者互不影響,正好能滿足測試的要求,當(dāng)然需要配置更多的實(shí)例也是可以的額外收獲.

這次配置過程中還遇到一些額外的問題,記下來備忘.

假如使用的是ubuntu(我目前的版本還是11.10),默認(rèn)會(huì)安裝apparmor,這個(gè)軟件是一個(gè)詭異的存在,它就像一個(gè)暗戀者,一直默默限制軟件的訪問權(quán)限,然后又不被系統(tǒng)待見,以至于我根本不知道它的存在,其實(shí)它是一個(gè)白名單,在/etc/apparmor.d/中指定了/usr/sbin/mysqld對各文件的訪問權(quán)限,當(dāng)我想將mysql的數(shù)據(jù)文件夾遷移到別的位置時(shí),一直報(bào)這個(gè)錯(cuò)誤:

Can't create test file /data/mysql1/littleboy.lower-test

而令人費(fèi)解的就是mysql對這些文件夾是有讀寫權(quán)限的,其實(shí)只需要編輯/etc/apparmor.d/usr.sbin.mysqld文件,依樣畫葫蘆地為文件夾加上rw權(quán)限就可以了.

給mysql設(shè)置遠(yuǎn)程訪問權(quán)限,只需要下面這條sql,代碼如下:

INSERT mysql.user ( `Host`, `User`, `Password` ) VALUES ( '%', 'root', PASSWORD('123456') );

其中最關(guān)鍵的就是那個(gè)'%',表示通過任意host均可以訪問到本機(jī)的mysql.

給mysql設(shè)置密碼,代碼如下:

mysqladmin -u root -h 127.0.0.1 password 123456

上面那種是在不登錄mysql的情況下修改密碼,還有兩種可以通過改表的方式,見MySQL設(shè)置密碼的三種方法.

修改過密碼以后,mysqld_multi可能就不能通過默認(rèn)配置來結(jié)束mysqld進(jìn)程了,這時(shí)候需要在配置里加上用戶名和密碼,代碼如下:

  1. [mysqld_multi] 
  2. mysqld = /usr/local/mysql/bin/mysqld 
  3. mysqladmin = /usr/local/mysql/bin/mysqladmin 
  4. user = root 
  5. password = 123456 

當(dāng)然這樣可能會(huì)有一些安全隱患,因?yàn)閙y.cnf是可見的,假如是多人使用,可以將password這行去掉,每次操作mysqld_multi的時(shí)候,在后面加上--password=123456參數(shù)就行了.

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 灌南县| 辛集市| 宁国市| 五莲县| 西城区| 西贡区| 根河市| 枣庄市| 和顺县| 金湖县| 株洲市| 达日县| 宁蒗| 文化| 永寿县| 陕西省| 北票市| 东城区| 六盘水市| 静乐县| 武隆县| 柘荣县| 和田县| 阳原县| 梁山县| 玉树县| 咸丰县| 江北区| 曲松县| 吉安市| 泰和县| 仁化县| 平安县| 扶余县| 陵川县| 新沂市| 沭阳县| 岳池县| 澄城县| 隆化县| 马公市|