配置時環境:騰訊雲服務器,雲服務器上的MySQL5.7,未配置過主從,如環境不一致,請謹慎操做。個人Master主機(如下稱主機)公網IP是119.29.234.4三、內網ip是10.104.190.222,Slave從機(如下稱從機)的IP不用關心(主機設權限爲全部IP均可以訪問,使用」%「實現),請修改成你本身的並在下面代碼包含公網IP的地方進行相應的修改。(藍色字體是全部操做主機的命令步驟,綠色字體是操做從機的命令步驟,底部是供老鳥使用命令集合)mysql
騰訊雲服務器如圖所示:sql
具體步驟:數據庫
1.登陸雲服務器(如主機,從機未安裝jdk和MySQL請操做2 3 ,否請跳過),下面是控制檯用戶命令操做vim
2.安裝JDK: 安全
sudo apt-get install openjdk-8-jdk 服務器
y 測試
3.安裝MySQL: 字體
sudo apt-get install mysql-server阿里雲
帳號: root編碼
密碼: root
4.1修改mysqld.cnf文件信息
cd /etc/mysql/mysql.conf.d/
sudo vim mysqld.cnf 此時打開mysqld.cnf出現大量信息
i 進入編輯模式
↓ 一直操做向下箭頭,找到信息底部白色的兩行代碼,這部分代碼便是被註釋的代碼,如圖:
刪除#,修改binglog_do_db = db_zhanye_sm,binlog_ignore_db = mysql 。 其中db_zhanye_sm是要同步的數據庫名稱,操做後以下圖所示
找到bing-adress 把127.0.0.1修改成騰訊雲主機內網ip 10.104.190.222,不修改會致使等下MySQL沒法重啓
Esc 退出vim編輯狀態
:wq 保存修改內容,並回到控制檯(第一步":"具體操做按同時按住Shift ;兩個鍵 第二步w 第三步q 第四步回車鍵 )
mysql -u root -p 打開數據庫,接下來輸入數據庫密碼
root 輸入密碼後進入數據庫
接下來是建立一個新用戶用來遠程鏈接使用:
在MySQL中輸入如下命令 註釋:username - 你將建立的用戶名, host - 指定該用戶在哪一個主機上能夠登錄,若是是本地用戶可用localhost, 若是想讓該用戶能夠從任意遠程主機登錄,可使用通配符%. password - 該用戶的登錄密碼,密碼能夠爲空,若是爲空則該用戶能夠不須要密碼登錄服務器。MySQL裏面輸入命令:CREATE USER 'username'@'host' IDENTIFIED BY 'password';
create user 'Edward'@'%' IDENTIFIED BY '123';
在MySQL中操做此命令,此處是受權命令。例如:GRANT privileges ON databasename.tablename TO 'username'@'host';privileges - 用戶的操做權限,如SELECT , INSERT , UPDATE 等(詳細列表見該文最後面).若是要授予所的權限則使用ALL.;databasename - 數據庫名,tablename-表名,若是要授予該用戶對全部數據庫和表的相應操做權限則可用*表示, 如*.*. 例子:( GRANT SELECT, INSERT ON test.user TO 'pig'@'%';)
GRANT SELECT,INSERT ON db_zhanye_sm.* TO 'Edward'@'%';
用以上命令受權的用戶不能給其它用戶受權,若是想讓該用戶能夠受權,用如下命令: GRANT privileges ON databasename.tablename TO 'username'@'host' WITH GRANT OPTION;
GRANT privileges ON db_zhanye_sm.test TO 'Edward'@'%' WITH GRANT OPTION;
授予從機複製表權限,示例:GRANT REPLICATION SLAVE ON *.* TO 'user'@'X.X.X.X' IDENTIFIED BY 'password';
GRANT REPLICATION SLAVE ON *.* TO 'Edward'@'%' IDENTIFIED BY '123';
exit 退出數據庫操做
sudo /etc/init.d/mysql restart 重啓數據庫
mysql -u root -p 登陸數據庫,
root
show master status; 顯示信息以下圖所示,注:執行完此步驟後不要再操做主服務器MYSQL,防止主服務器狀態值變化。記錄File 和 Position的值並給從機使用;
主機命令集合,供老鳥使用
sudo apt-get install openjdk-8-jdk sudo apt-get install mysql-server cd /etc/mysql/mysql.conf.d/ sudo vim mysqld.cnf 取消註釋,修改 binglog_do_db = binlog_ignore_db = 騰訊雲安全規則修改,找到bing-adress 把127.0.0.1替換爲騰訊雲主機內網ip Esc :wq mysql -u root -p create user 'user'@'%' IDENTIFIED BY 'password'; GRANT SELECT,INSERT ON db_zhanye_sm.* TO 'user'@'%'; GRANT privileges ON db_zhanye_sm.test TO 'user'@'%' WITH GRANT OPTION; GRANT REPLICATION SLAVE ON *.* TO 'user'@'%' IDENTIFIED BY 'password'; sudo /etc/init.d/mysql restart mysql -u root -p show master status;
4.2修改mysqld.cnf文件信息
cd /etc/mysql/mysql.conf.d/
sudo vim mysqld.cnf 此時打開mysqld.cnf出現大量信息
i 進入編輯模式
↓ 一直操做向下箭頭,在[mysqld]下一行添加:
[mysqld]
server-id = 2
relay-log = slave-relay-bin
relay-log-index = slave-relay-bin.index
Esc 退出vim編輯狀態
:wq 保存修改內容,並回到控制檯(第一步":"具體操做按同時按住Shift ;兩個鍵 第二步w 第三步q 第四步回車鍵 )
重啓MySQL,命令:
sudo /etc/init.d/mysql restart
3.登陸MySQL
mysql -u root -p 打開數據庫,接下來輸入數據庫密碼
root 輸入密碼後進入數據庫
stop slave; 中止slave服務
在MySQL中輸入如下命令,便可鏈接Master主服務器:此時須要主機提供記錄的File 和 Position的值
change master to master_host='119.29.234.43',master_port=3306,master_user='Edward',master_password='123',master_log_file='mysql-bin.000009',master_log_pos=154;
備註:master_host對應主服務器的外網IP地址,master_port對應主服務器的端口(3306),master_log_file對應show master status顯示的File列:mysql-bin.000009,master_log_pos對應Position列:154,不然有可能出現同步失敗。
exit 退出MySQL
sudo /etc/init.d/mysql restart 重啓數據庫
登陸MySQL
mysql -u root -p 打開數據庫,接下來輸入數據庫密碼
root 輸入密碼後進入數據庫
start slave; 啓動Slave數據同步
show slave status\G; 若是slave_io_running和slave_sql_running都爲yes,那麼代表能夠成功同步了
從機命令集合,供老鳥使用
cd /etc/mysql/mysql.conf.d/ sudo vim mysqld.cnf [mysqld] server-id = 2 relay-log = slave-relay-bin relay-log-index = slave-relay-bin.index sudo /etc/init.d/mysql restart mysql -u root -p start slave; stop slave; change master to master_host='119.29.234.43',master_port=3306,master_user='Edward',master_password='123',master_log_file='mysql-bin.000009',master_log_pos=154; show slave status\G;
主機數據庫建立:
在主機上登陸MySQL
mysql -u root -p 打開數據庫,接下來輸入數據庫密碼
root 輸入密碼後進入數據庫
查看數據庫: show databases;
建立數據庫並設置編碼UTF8: CREATE DATABASE `db_zhanye_sm` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;
{ 備註:sql文件寫入數據庫:source ~/db_zhanye_sm.sql 其中"~/"是路徑 db_zhanye_sm.sql是sql文件名,須要藉助軟件(例如:FlashFXP)把sql文件上傳到服務器,才能寫入,這裏不詳述;採起新建數據庫操做測試 }
查看數據庫: show databases;
選定數據庫: use db_zhanye_sm;
添加一張表並插入數據:
CREATE TABLE `departments` ( `dept_id` int(11) NOT NULL, `dept_name` varchar(30) DEFAULT NULL, PRIMARY KEY (`dept_id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; INSERT INTO `departments` VALUES ('1', '生產部'); INSERT INTO `departments` VALUES ('2', '質量管理部'); INSERT INTO `departments` VALUES ('3', '技術部'); INSERT INTO `departments` VALUES ('4', '綜合管理部');
從機數據庫建立,查看同步:
在從機上登陸MySQL
mysql -u root -p 打開數據庫,接下來輸入數據庫密碼
root 輸入密碼後進入數據庫
查看數據庫: show databases;
建立數據庫並設置編碼UTF8: CREATE DATABASE `db_zhanye_sm` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;
選定數據庫: use db_zhanye_sm;
查看全部表:(查看到表便是成功) show tables;
查看departments表的數據,主機添加數據便可從新查便可看到新數據:
select * from departments;
附:雲服務器安全規則配置詳情
騰訊雲:
一、設置主數據庫外網訪問權限。
a、設置3306端口外部訪問權限。(修改/etc/mysql/mysql/mysql.conf.d/文件夾中的mysqld.cnf文件,
將bind_address的值由'127.0.0.1'改爲你騰訊雲內網IP地址)
b、重啓mysql服務器,而後輸入netstat -anpt|grep 3306檢查3306端口是否顯示騰訊雲的內網IP
二、阿里雲修改主機/etc/mysql/mysql.cnf.d/mysqld.cnf文件,將bind_address註釋掉添加安全組規則:入方向:協議類型選擇My SQL受權類型改成地址段訪問受權對象輸入:0.0.0.0/0