由於mysql的架構中少不了主從,所以今天在虛擬機上做了一遍;
兩臺mysql服務器
主服務器 192.168.1.184
從服務器 192.168.1.233
主從複製實現的功能:
主服務器中的數據同步到從服務器上,保證兩臺數據庫中的數據實時同步;
1、主服務器的配置
1.1、安裝mysql
[root@localhost ~]# yum -y install mysql mysql-server
1.2、啓動mysql
[root@localhost ~]#service mysqld start
1.3、設置mysql的密碼
[root@localhost ~]#mysqladmin -uroot password 123456(由於是虛擬機,密碼簡單點,生產環境切勿設置此密碼)
1.4、修改mysql的配置文件
[root@localhost ~]#vim /etc/my.conf ---在[mysqld]標籤下添加一下幾行
log-bin=mysql-bin
server-id=184 ---一般設置爲服務器ip的最後一段
1.5、重新啓動mysql
[root@localhost ~]#service mysqld restart
1.6、在主服務器上建立賬戶並授權slave
[root@localhost ~]#mysql -uroot -p 123456
mysql>grant replication slave on *.* to 'backup'@'%' identified by '123456';
mysql>flush privileges;
1.7、查詢主服務器master的二進制日誌當前狀態,記錄下當前日誌文件名及位置,後面用的到
msyql>show master status;
+------------------+-----------+--------------+------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+-----------+--------------+------------------+
| mysql-bin.000001 | 523 | | |
+------------------+-----------+--------------+------------------+
1 row in set (0.00 sec)
msyql>select * from mysql.user where user = 'backup' \G;
*************************** 1. row ***************************
Host: %
User: backup
Password: *6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9
Select_priv: N
Insert_priv: N
Update_priv: N
Delete_priv: N
Create_priv: N
Drop_priv: N
Reload_priv: N
Shutdown_priv: N
Process_priv: N
File_priv: N
Grant_priv: N
References_priv: N
Index_priv: N
Alter_priv: N
Show_db_priv: N
Super_priv: N
Create_tmp_table_priv: N
Lock_tables_priv: N
Execute_priv: N
Repl_slave_priv: Y ---爲y時說明成功
Repl_client_priv: N
Create_view_priv: N
Show_view_priv: N
Create_routine_priv: N
Alter_routine_priv: N
Create_user_priv: N
Event_priv: N
Trigger_priv: N
ssl_type:
ssl_cipher:
x509_issuer:
x509_subject:
max_questions: 0
max_updates: 0
max_connections: 0
max_user_connections: 0
1 row in set (0.07 sec)
ERROR:
No query specified
2、從服務器配置
2.1、安裝mysql
[root@localhost ~]# yum -y install mysql mysql-server
2.2、啓動mysql
[root@localhost ~]#service mysqld start
2.3、設置mysql的密碼
[root@localhost ~]#mysqladmin -uroot password 123456
2.4、修改mysql的配置文件
[root@localhost ~]#vim /etc/my.conf ---在[mysqld]標籤下添加
server-id=233 ---一般設置爲服務器ip的最後一段
2.5、重新啓動mysql
[root@localhost ~]#service mysqld restart
2.6、進入mysql
[root@localhost ~]#mysql -uroot -p 123456
2.7、配置從服務器
mysql>change master to
mysql>master_host = '192.168.1.184', ---主服務器ip
mysql>master_user = 'backup',
mysql>master_password = '123456',
mysql>master_log_file = 'mysql-bin.000001'; --二進制文件名字
mysql>master_log_pos = 523; --二進制文件其實位置
2.8、開啓從服務器複製二進制日誌
mysql>slave start;
2.9、檢查從服務器複製狀態
mysql>show slave status\G; ---Slave_IO_Running: Yes 雙yes說明成功
Slave_SQL_Running: Yes
*************************** 1. row ***************************
Slave_IO_State: Waiting for master to send event
Master_Host: 192.168.1.184
Master_User: backup
Master_Port: 3306
Connect_Retry: 60
Master_Log_File: mysql-bin.000001
Read_Master_Log_Pos: 523
Relay_Log_File: localhost-relay-bin.000010
Relay_Log_Pos:
Relay_Master_Log_File: mysql-bin.000001
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
Replicate_Do_DB:
Replicate_Ignore_DB:
Replicate_Do_Table:
Replicate_Ignore_Table:
Replicate_Wild_Do_Table:
Replicate_Wild_Ignore_Table:
Last_Errno: 0
Last_Error:
Skip_Counter: 0
Exec_Master_Log_Pos: 612037678
Relay_Log_Space: 557
Until_Condition: None
Until_Log_File:
Until_Log_Pos: 0
Master_SSL_Allowed: No
Master_SSL_CA_File:
Master_SSL_CA_Path:
Master_SSL_Cert:
Master_SSL_Cipher:
Master_SSL_Key:
Seconds_Behind_Master: 0
Master_SSL_Verify_Server_Cert: No
Last_IO_Errno: 0
Last_IO_Error:
Last_SQL_Errno: 0
Last_SQL_Error:
Replicate_Ignore_Server_Ids:
Master_Server_Id: 1
1 row in set (0.00 sec)
ERROR:
No query specified
主從複製到這就算成功了,如果最後沒有出現雙yes,只出現一個或者一個沒有,請看看你的操作,另外,記得把防火牆關了
service iptables stop
下面來驗證一下
3、驗證
3.1、主服務器 3.2、從服務器
查看數據庫 查看數據庫
mysql> show databases; mysql>show databases;
+--------------------+ +--------------------+
| Database | | Database |
+--------------------+ +--------------------+
| information_schema | | information_schema |
| backup | | backup |
| mysql | | mysql |
| test | | performance_schema |
+--------------------+ | test |
4 rows in set (0.06 sec) +--------------------+
創建一個新的數據庫 5 rows in set (0.06 sec)
mysql> create database mysqldb;
Query OK, 1 row affected (0.00 sec)
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| backup |
| mysql |
| mysqldb |
| test |
+--------------------+
5 rows in set (0.00 sec)
創建成功
查看從服務器的數據庫
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| backup |
| mysql |
| mysqldb |
| performance_schema |
| test |
+--------------------+
6 rows in set (0.00 sec)
至此,主從複製算是成功了,希望對你有所幫助