1. 程式人生 > >資料庫--一主多從

資料庫--一主多從

多實列及其一主多從

建立存放資料庫資訊的目錄

[[email protected] ~]# mkdir /data/330{7..9} –p

建立存放配置檔案的檔案

[[email protected] ~]# touch /data/330{7..9}/my.cnf

編輯3307配置檔案

[[email protected] ~]# vim /data/3307/my.cnf 
[mysqld] 
basedir=/application/mysql 
datadir=/data/3307/data 
socket=/data/3307/mysql.sock 
log_error=/data/3307/mysql.log 
log-bin=/data/3307/mysql-bin 
server_id=7 
port=3307 
[client] 
socket=/data/3307/mysql.sock   //指定了3307資料庫的sock的檔案

編輯3308配置檔案

[[email protected] ~]# vim /data/3307/my.cnf 
[mysqld] 
basedir=/application/mysql 
datadir=/data/3308/data 
socket=/data/3308/mysql.sock 
log_error=/data/3308/mysql.log 
log-bin=/data/3308/mysql-bin 
server_id=8 
port=3308 
[client] 
socket=/data/3308/mysql.sock

編輯3309配置檔案

[[email protected] ~]# vim /data/3309/my.cnf 
[mysqld] 
basedir=/application/mysql 
datadir=/data/3309/data 
socket=/data/3309/mysql.sock 
log_error=/data/3309/mysql.log 
log-bin=/data/3309/mysql-bin 
server_id=9 
port=3309 
[client] 
socket=/data/3309/mysql.sock

初始化3307資料庫

[[email protected] ~]#/application/mysql/scripts/mysql_install_db \ 
--user=mysql \ 
--defaults-file=/data/3307/my.cnf \ 
--basedir=/application/mysql --datadir=/data/3307/data

初始化3308資料庫

[[email protected] ~]#/application/mysql/scripts/mysql_install_db \ 
--user=mysql \ 
--defaults-file=/data/3308/my.cnf \ 
--basedir=/application/mysql --datadir=/data/3308/data

初始化3309資料庫

[[email protected] ~]#/application/mysql/scripts/mysql_install_db \ 
--user=mysql \ 
--defaults-file=/data/3309/my.cnf \ 
--basedir=/application/mysql --datadir=/data/3309/data

修改許可權

[[email protected]]# chown -R mysql.mysql /data/330* 

啟動實列

[[email protected]]# mysqld_safe --defaults-file=/data/3307/my.cnf & 
[[email protected]]# mysqld_safe --defaults-file=/data/3308/my.cnf & 
[[email protected]]# mysqld_safe --defaults-file=/data/3309/my.cnf &

登陸資料庫

    [[email protected]]# mysql -S /data/3307/mysql.sock -e "show variables like 'server_id'"
    [[email protected]]# mysql -S /data/3308/mysql.sock -e "show variables like 'server_id'"
    [[email protected]]# mysql -S /data/3309/mysql.sock -e "show variables like 'server_id'"

以上實列配置(一主多從)

以3307做為主庫

[[email protected]]# mysql -S /data/3307/mysql.sock -e "show variables like 'server_id'" //登陸主庫

資料庫的主庫的授權

grant replication slave on *.* to [email protected]'localhost' identified by '123';

檢視資料庫的狀態

mysql> show master status;

要提取出file值和position值從庫使用。

匯出主庫的內容
mysqldump -uroot -p3307 -S /data/3307/mysql.sock -A >/root/3307.sql

從庫的配置 (3308和3309做為從庫)

匯入主庫的內容,主從庫的內容實現高度一致

mysql -uroot -p3308 -S /data/3308/mysql.sock </root/3307.sql

登陸從庫

mysql -S /data/3308/mysql.sock -e "show variables like 'server_id'"

從庫的設定

mysql> change master to
    -> master_host='localhost',
    -> master_port=3307,
    -> master_user='slave',
    -> master_password='123',
    -> master_log_file='mysql-bin.000008',  // 一定要和主庫的授權表資訊表示一致
-> master_log_pos=521;                 // 一定要和主庫的授權表資訊表示一致

狀態值檢視

mysql> start slave;
mysql> show slave status\G;

主從配置成功

匯入主庫的內容,主從庫的內容實現高度一致

mysql -uroot -p3309 -S /data/3309/mysql.sock </root/3307.sql

登陸從庫

mysql -S /data/3309/mysql.sock -e "show variables like 'server_id'"

從庫的設定

mysql> change master to
    -> master_host='localhost',
    -> master_port=3307,
    -> master_user='slave',
    -> master_password='123',
    -> master_log_file='mysql-bin.000008',  // 一定要和主庫的授權表資訊表示一致
-> master_log_pos=521;                 // 一定要和主庫的授權表資訊表示一致

狀態值檢視

mysql> start slave;
mysql> show slave status\G;

主從配置成功資料庫--一主多從