(一)同時部署兩台mysql數據庫 mysql-8.0.15
部署主數據庫:
1.使用代碼編輯器eclipse,idea 創建my.txt 文件 在文件中編寫內容為 編輯完成之后將文件格式保存成US-ASCII編碼
[mysql]
# 設置mysql客戶端默認字符集
default-character-set=utf8
[mysqld]
#設置3306端口
port = 3306
# 設置mysql的安裝目錄
basedir=F:\mysql-8.0.15-winx64
# 設置mysql數據庫的數據的存放目錄
datadir=F:\mysql-8.0.15-winx64\data
# 允許最大連接數
max_connections=200
# 服務端使用的字符集默認為8比特編碼的latin1字符集
character-set-server=utf8
# 創建新表時將使用的默認存儲引擎
default-storage-engine=INNODB
#主庫和從庫需要不一致
server-id=1
log-bin=mysql-bin
#同步的數據庫
binlog-do-db=test
#不需要同步的數據庫
binlog-ignore-db=mysql
2.將改好的配置文件后綴名改為ini,然后放到mysql解壓后的bin目錄下(路徑可以更改)
3.以管理員身份運行cmd 到mysql解壓后的bin目錄下運行如下命令:
mysqld --initialize --user=mysql --console
運行完成之后控制台會創建一個root的變態隨機密碼復制下來
4.安裝MySQL服務,以管理員身份運行cmd到解壓后的bin目錄下,並輸入mysqld install MySQL --defaults-file="F:\mysql-8.0.15-winx64\bin\my.ini",其中的路徑為你正式的ini文件。
5.運行cmd,輸入net start mysql啟動MySQL服務,再輸入mysql -u root -p,然后輸入臨時密碼
6.要想使用mysql 必須重新修改密碼mysql8以下的使用set password = password('新密碼'); mysql8以上的使用 ALTER USER "root"@"localhost" IDENTIFIED BY "你的新密碼";
如果要修改遠程連接等 則需要另外設置https://www.cnblogs.com/wangbodang/p/10819298.html
同樣配置從數據庫:和主數據庫配置一樣只需要修改幾個地方就可以
1.編寫my.ini 配置文件並且放到從數據庫解壓的目錄下注:(端口號,server-id,mysql安裝目錄,數據存放目錄和主數據庫不一致)
[mysql]
# 設置mysql客戶端默認字符集
default-character-set=utf8
[mysqld]
#設置3306端口
port = 3308
# 設置mysql的安裝目錄
basedir=F:\mysql-8.0.15slave-winx64
# 設置mysql數據庫的數據的存放目錄
datadir=F:\mysql-8.0.15slave-winx64\data
# 允許最大連接數
max_connections=200
# 服務端使用的字符集默認為8比特編碼的latin1字符集
character-set-server=utf8
# 創建新表時將使用的默認存儲引擎
default-storage-engine=INNODB
#主庫和從庫需要不一致
server-id=2
log-bin=mysql-bin
#同步的數據庫
binlog-do-db=test
#不需要同步的數據庫
binlog-ignore-db=mysql
3.以管理員身份運行cmd 到mysql解壓后的bin目錄下運行如下命令:
mysqld --initialize --user=mysql --console
運行完成之后控制台會創建一個root的變態隨機密碼復制下來
4.安裝MySQL服務,以管理員身份運行cmd到解壓后的bin目錄下,並輸入mysqld install MySQLslave --defaults-file="F:\mysql-8.0.15slave-winx64\bin\my.ini",其中的路徑為你正式的ini文件注:(服務名字和主數據庫服務名必須不一致) 。
5.運行cmd,輸入net start mysqlslave啟動從數據MySQL服務,再輸入mysql -u root -p,然后輸入臨時密碼 然后修改密碼
(二)配置主從復制
1.登錄主數據庫后創建同步用戶注:(mysql8以上版本創建用戶時指定加密方式如下)
mysql> CREATE USER 'slave'@'%' IDENTIFIED WITH 'mysql_native_password' BY '123456'
mysql> GRANT REPLICATION SLAVE ON *.* TO 'slave'@'%' ;
mysql> FLUSH PRIVILEGES;
完成之后運行
然后查詢主數據庫狀態,並記錄下File和Position字段的值
mysql> show master status; +------------------+----------+--------------+--------------------------+-------------------+ | File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set | +------------------+----------+--------------+--------------------------+-------------------+ | mysql-bin.000001 | 100 | test | mysql | | +------------------+----------+--------------+--------------------------+-------------------+ 1 row in set (0.02 sec)
2.登錄從數據庫然后執行如下命令:
stop slave;
設置master信息其中 master_log_file,master_log_pos的值為主數據庫狀態對應的值
change master to master_host='192.168.1.84', master_port=3306, master_user='slave', master_password='123456', master_log_file='mysql-bin.000001', master_log_pos=100;
運行命令:
start slave;
查看從庫連接主庫狀態:
show slave status \G
結果為:
mysql> show slave status \G
*************************** 1. row ***************************
Slave_IO_State: Waiting for master to send event
Master_Host: 192.168.1.84
Master_User: slave
Master_Port: 3306
Connect_Retry: 60
Master_Log_File: mysql-bin.000001
Read_Master_Log_Pos: 2231
Relay_Log_File: SC-2016551520-relay-bin.000001
Relay_Log_Pos: 906
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: 100
Relay_Log_Space: 1122
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
Master_UUID: bb969d1a-43bc-11e9-b6d4-88d7f6c7fea0
Master_Info_File: mysql.slave_master_info
SQL_Delay: 0
SQL_Remaining_Delay: NULL
Slave_SQL_Running_State: Slave has read all relay log; waiting for more up
dates
Master_Retry_Count: 86400
Master_Bind:
Last_IO_Error_Timestamp:
Last_SQL_Error_Timestamp:
Master_SSL_Crl:
Master_SSL_Crlpath:
Retrieved_Gtid_Set:
Executed_Gtid_Set:
Auto_Position: 0
Replicate_Rewrite_DB:
Channel_Name:
Master_TLS_Version:
Master_public_key_path:
Get_master_public_key: 0
1 row in set (0.00 sec)
當Slave_IO_State的值為:Waiting for master to send event 表示成功