網域查詢: www.
返回首頁
當前位置: 首頁 > 站長學院 > 數據庫 > MYSQL >

分身術,一台機器運行多個Mysql 服務 (4)

時間:2010-02-17 16:52來源: 作者: 點擊:
********************************************************** 第三部分, 在一台服務器構建多mysql 從服務。 ********************************************************** 構建從服務器的預選準備: 建議用mysqld_multi 把主服
  

**********************************************************

第三部分, 在一台服務器構建多mysql 從服務。

**********************************************************

構建從服務器的預選準備: 建議用mysqld_multi 把主服務器的mysql全部停掉.刪除數據目錄中的所有除數據庫目錄以外的任何文件(此文中的數據目錄庫有4個,datadir = /usr/local/mysql/中的 data1 -- data1).建主從都用相同的數據目錄路徑.

用Tar 命令把每數據庫封裝起來,並通過sftp命令put/get到從服務器(db-app1 192.168.0.101)。

下列操作供參考:

在db-app主機上的操作

db-app:/ # tar -cf data1.tar /usr/local/mysql/data1

db-app:/ # tar -cf data2.tar /usr/local/mysql/data2

db-app:/ # tar -cf data3.tar /usr/local/mysql/data3

db-app:/ # tar -cf data4.tar /usr/local/mysql/data4

在db-app1主機上的操作

db-app1:/ # tar xvf data1.tar

db-app1:/ # tar xvf data2.tar

db-app1:/ # tar xvf data3.tar

db-app1:/ # tar xvf data4.tar

同時,請確認系統帳號mysql是否對主/從服務器的中的mysql數據目錄都有操作權限,如果無法確認,你直接更修改這些目錄的所有權即可。

在db-app主機上的操作

db-app:/ # chown mysql.mysql /usr/local/mysql/data1 -R

db-app:/ # chown mysql.mysql /usr/local/mysql/data2 -R

db-app:/ # chown mysql.mysql /usr/local/mysql/data3 -R

db-app:/ # chown mysql.mysql /usr/local/mysql/data4 -R

在db-app1主機上的操作

db-app1:/ # chown mysql.mysql /usr/local/mysql/data1 -R

db-app2:/ # chown mysql.mysql /usr/local/mysql/data2 -R

db-app3:/ # chown mysql.mysql /usr/local/mysql/data3 -R

db-app4:/ # chown mysql.mysql /usr/local/mysql/data4 -R

下面就是從服務器上/etc/my.cnf的全部內容。

提示:下面的my.cnf中將會提到一個帳號:repl, 口令為:'1234567890', 這個帳號就是上面專門建立的。

其實都一樣,主要是修改my.cnf中的內容,讓每個從mysql通過主mysql的不同的端口,去獲取各自bin-log來更新自生的數據庫內容.現貼上我的my.cnf全部內容(從服務器),相關參數與請參考mysql 官文手冊。

 

#[client]
            #password       = your_password
            #port           = 3306
            #socket         = /tmp/mysql.sock
            [mysqld_multi]
            mysqld = /usr/local/mysql/bin/mysqld_safe
            mysqladmin = /usr/local/mysql/bin/mysqladmin
            user = mysql
            password = netmoniit
            [mysqld1]
            port      = 3306
            socket    = /tmp/mysql.sock1
            skip-locking
            pid-file=/usr/local/mysql/data/net-app1a.pid
            datadir = /usr/local/mysql/data
            log=/usr/local/mysql/data/net-app1.log
            user = mysql
            log-slow-queries=/usr/local/mysql/data/slowquery.log
            long_query_time = 2
            key_buffer = 256M
            max_allowed_packet = 1M
            table_cache = 512
            sort_buffer_size = 2M
            read_buffer_size = 2M
            myisam_sort_buffer_size = 64M
            thread_cache = 32
            query_cache_size = 32M
            thread_concurrency = 2
            max_connections=500
            server-id       = 2
            master-host     =   192.168.0.100
            master-user     =   'repl'
            master-password =   '1234567890'
            master-port     =  3309
            report-host = net-app1
            master-connect-retry = 30
            log-bin
            log-slave-updates
            [mysqld2]
            port = 3307
            socket = /tmp/mysql.sock2
            pid-file = /usr/local/mysql/data2/net-app1b.pid
            datadir = /usr/local/mysql/data2
            log=/usr/local/mysql/data2/net-app1.log
            user = mysql
            log-slow-queries=/usr/local/mysql/data2/slowquery.log
            long_query_time = 10
            key_buffer = 128M
            max_allowed_packet = 1M
            table_cache = 512
            sort_buffer_size = 1M
            read_buffer_size = 1M
            myisam_sort_buffer_size = 32M
            thread_cache = 32
            query_cache_size = 16M
            thread_concurrency = 2
            max_connections=300
            server-id       = 2
            master-host     =   192.168.0.100
            master-user     =   'repl'
            master-password =   '1234567890'
            master-port     =  3309
            report-host = net-app1
            master-connect-retry = 30
            log-bin
            log-slave-updates
            [mysqld3]
            port = 3308
            socket = /tmp/mysql.sock3
            pid-file = /usr/local/mysql/data3/net-app1c.pid
            datadir = /usr/local/mysql/data3
            log=/usr/local/mysql/data3/net-app1.log
            user = mysql
            log-slow-queries=/usr/local/mysql/data3/slowquery.log
            long_query_time = 10
            key_buffer = 128M
            max_allowed_packet = 1M
            table_cache = 512
            sort_buffer_size = 1M
            read_buffer_size = 1M
            myisam_sort_buffer_size = 32M
            thread_cache = 32
            query_cache_size = 16M
            thread_concurrency = 2
            max_connections=300
            server-id       = 2
            master-host     =   192.168.0.100
            master-user     =   'repl'
            master-password =   '1234567890'
            master-port     =  3309
            report-host = net-app1
            master-connect-retry = 30
            log-bin
            log-slave-updates
            [mysqld3]
            port = 3308
            socket = /tmp/mysql.sock4
            pid-file = /usr/local/mysql/data4/net-app1d.pid
            datadir = /usr/local/mysql/data4
            log=/usr/local/mysql/data4/net-app1.log
            user = mysql
            log-slow-queries=/usr/local/mysql/data4/slowquery.log
            long_query_time = 10
            key_buffer = 128M
            max_allowed_packet = 1M
            table_cache = 512
            sort_buffer_size = 1M
            read_buffer_size = 1M
            myisam_sort_buffer_size = 32M
            thread_cache = 32
            query_cache_size = 16M
            thread_concurrency = 2
            max_connections=300
            server-id       = 2
            master-host     =   192.168.0.100
            master-user     =   'repl'
            master-password =   '1234567890'
            master-port     =  3309
            report-host = net-app1
            master-connect-retry = 30
            log-bin
            log-slave-updates
            [mysqldump]
            quick
            max_allowed_packet = 16M
            [mysql]
            no-auto-rehash
            # Remove the next comment character if you are not familiar with SQL
            #safe-updates
            [isamchk]
            key_buffer = 128M
            sort_buffer_size = 128M
            read_buffer = 2M
            write_buffer = 2M
            [myisamchk]
            key_buffer = 128M
            sort_buffer_size = 128M
            read_buffer = 2M
            write_buffer = 2M
            [mysqlhotcopy]
            interactive-timeout

在功告成,現在分別啟動兩台主機上的多mysql服務,這樣,每個主服務的每個mysql有變化,都會自動復制/更新到從服務器對應的數據庫中。

db-app:/ # /usr/local/mysq/bin/mysqld_multi --config-file=/etc/my.cnf start 1-4

db-app1:/ # /usr/local/mysq/bin/mysqld_multi --config-file=/etc/my.cnf start 1-4


頂一下
(0)
0%
踩一下
(0)
0%
------分隔線----------------------------
最新評論 查看所有評論
發表評論 查看所有評論
請自覺遵守互聯網相關的政策法規,嚴禁發佈色情、暴力、反動的言論。
評價:
表情:
用戶名: 密碼: 驗證碼:
推薦內容