配置master和slave兩臺mysql服務器的主從複製,使得向master服務器的temp數據庫的users表插入數據時,自動向slave服務器同步。
master要啓用binlog日誌,要授權給複製用戶,備份數據庫時要鎖表。在slave上CHANGE MASTER TO配置複製參數,start slave啓用複製。
[root@mysql-master ~]# yum install mysql-server
[root@mysql-master ~]# service mysqld start
[root@mysql-master ~]# netstat -ant 查看3306端口是否開放
chkconfig --level 345 mysqld on 添加爲自啓動服務
mysqladmin -u root -p password 123
Mysql-master:
[root@mysql-master ~]# mysql -u root -p
show databases;
創建數據庫:
create database temp;
創建表:
create table temp.users(user_name char(16) not null,user_passwd char(48) default "",primary key(user_name));
插入測試數據:
insert into temp.users values("zhang3","123");
查詢數據:
select * from temp.users;
在master數據庫上授權訪問:(注意改地址)
grant all on *.* to u1@'%' identified by '123';
grant all on temp.* to u2@'192.168.?.%' identified by '123';
grant select on temp.users to u3@'192.168.?.202' identified by '123';
在master數據庫上查看MYSQL數據庫中所有用戶:
SELECT DISTINCT CONCAT('User: ''',user,'''@''',host,''';') AS query FROM mysql.user;
在master數據庫上查看數據庫授權:
show grants for u1@'%';
在slave虛擬機上連接master數據庫驗證授權:
[root@mysql-slave ~]# mysql -u u1 -h 192.168.?.201 -p
配置mysql主從複製
在master數據庫上啓用binlog日誌,建立從庫賬號rep
[root@mysql-master /]# cp /usr/share/doc/mysql-server-5.1.73/my-medium.cnf /etc/my.cnf
重啓mysql,查看binlog日誌狀態
[root@mysql-master /]# service mysqld restart
mysql> show variables like 'log_bin';
Mysql>show master status;
建立從庫賬號rep
Mysql>grant replication slave on *.* to rep@'192.168.?.%' identified by '123';
在master數據庫上備份現有數據庫
對master數據庫鎖表
mysql> flush tables with read lock;
備份master數據庫
[root@mysql-master /]# mysqldump -u root -p --all-databases | gzip > /root/database_`date '+%m-%d-%Y'`.sql.gz
把備份文件拷貝到slave虛擬機(scp:openssh-clients)
[root@mysql-master~]#yum install openssh-clients
[root@mysql-slave~]#yum install openssh-clients
[root@mysql-master~]#scp database_05-06-2017.sql.gz [email protected].?.202:/root
配置slave數據庫,在slave上恢復數據庫
配置slave數據庫server-id,關閉binlog日誌
[root@mysql-slave~]#cp /usr/share/doc/mysql-server-5.1.73/my-medium.cnf /etc/my.cnf
[root@mysql-slave ~]# vi /etc/my.cnf
重啓slave虛擬機mysql,查看狀態
#service mysqld restart
>show variables like 'log_bin';
>show variables like 'server_id';
解壓數據庫備份文件
[root@mysql-slave ~]# gzip -d database_05-06-2017.sql.gz
恢復數據庫
[root@mysql-slave ~]# mysql -u root -p <database_05-06-2017.sql
mysql>show databases;
在slave數據庫上配置複製參數 ,啓動複製,驗證複製
在slave上配置複製參數
>CHANGE MASTER TO MASTER_HOST='192.168.?.201', MASTER_USER='rep', MASTER_PASSWORD='123', MASTER_LOG_FILE='mysql-bin.000001', MASTER_LOG_POS=254;
在slave上配置啓用複製
>start slave;
在slave上查看複製狀態
>show slave status \G;
在master上爲數據庫temp增加記錄,在slave查看同步情況
>insert into temp.users values("zhang1","123");
>insert into temp.users values("li4","123");
>select * from temp.users;