mysql修改主从复制id_mysql主从复制设置
三、mysql復制
master和每個slave是通過unique ID來區分的(server-id選項),而且每個slave需要配置好master的主機名,日志文件名,和日志位置
這些可以通過在slave會話中使用命令CHANGE MASTER TO ,存儲在slave的master.info文件中
--begin
1.在master上啟用二進制日志,并且指定唯一的server ID,復制服務器群必須使用唯一的server ID來標識,在1~2^32 -1
為了innodb事務處理的最大程度的一致性、持久性,需在master配置innodb_flush_log_at_trx_commit=1和sync_binlog=1
master上不應該開啟skip-networking選項,開啟的話slave將沒法與master通信
2.修改slave配置的server-id,該id不能與master沖突,設置之后需要重啟,如果設置多個slave則每一個server-id必須唯一
3.創建擁有REPLICATION SLAVE權限的帳戶給slave復制用
create user 'rep102'@'192.168.1.%' identified by '123456';
grant replication slave on *.* to 'rep102'@'192.168.1.%'; //ip為通配符確定的
4.指定slave從某個節點開始復制
在一個master會話中刷新所有表和堵塞的寫操作:FLUSH TABLES WITH READ LOCK;
在另一個master會話中,使用SHOW MASTER STATUS來看當前的binlog文件名及位置,file 和 position mysql-bin.000046 344
1)使用mysqldump為當前master創建快照
先在一個會話中使用 :FLUSH TABLES WITH READ LOCK;
再在另一個會話中dump:mysqldump --all-databases --lock-all-tables >dbdump.db
再解鎖: UNLOCK TABLES;
2)使用冷備份:copy文件
一致性最高時需要shutdown
mysqladmin shutdown
tar cf /tmp/db.tar ./data
rsync --recursive ./data /tmp/dbdata
restart
5.設置master-slave:
1)新的master-slave,沒有任何數據
拿到binlog文件和位置后,執行CHANGE MASTER TO
2)在現在數據基礎上設置主從
在master創建帳號給從庫使用
配置主庫server-id
創建主庫快照
得到主庫的binlog位置
更新從庫配置
為從庫加載數據:mysqldump的(以--skip-slave-start參數啟動,導入數據mysql < db.dump),冷備的(tar xvf dump.tar,使用--skip-slave-start啟動)
使用主庫的binlog位置配置從庫,使用正確的帳號
開啟slave進程
當slave開始復制時可在數據目錄下發現一個master.info文件和一個relay-log.info文件
3)在一個現在的主從系列中添加從庫
復制已有的從庫:mysqladmin shutdown; 復制數據文件到新的slave;
可能會報relay-log錯誤,使用與已有slave一樣的--relay-log避免錯誤,如果它沒指定則使用exist_slave_hostname-relay-bin
如果上面方法不行則把已有的slave的relay log索引文件拷到新slave,設置--relay-log-index選項與原slave相同,默認為exist_slave_hotname-relay-bin.index
如果新的slave目錄里沒有,將已有slave的master.info和relay-log.info文件拷進去,這兩個文件包含目前同步的master binlog位置和slave的延遲
開啟已有的slave
為新的slave分配server-id并啟動它,新的slave將使用master.info文件開始同步
4)在slave上設置master的配置
此處需要主庫的防火墻開放3306端口:
sudo /sbin/iptables -A INPUT -p tcp --dport 3306 -j ACCEPT
sudo /sbin/iptables -A OUTPUT -p tcp --dport 3306 -j ACCEPT
sudo /sbin/service iptables save
sudo /sbin/service iptables restart
sudo /sbin/iptables -L -n 查看3306端口已打開
CHANGE MASTER TO
MASTER_HOST='192.168.1.101',
MASTER_USER='rep',
MASTER_PASSWORD='123456',
MASTER_LOG_FILE='mysql-bin.000046',
MASTER_LOG_POS=344;
start slave;
show slave status;
Slave_IO_State: Waiting for master to send event
Master_Host: 192.168.1.101
Master_User: rep
Master_Port: 3306
Connect_Retry: 60
Master_Log_File: mysql-bin.000048
Read_Master_Log_Pos: 2332
Relay_Log_File: web102-relay-bin.000005
Relay_Log_Pos: 2478
Relay_Master_Log_File: mysql-bin.000048
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: 2332
Relay_Log_Space: 3528
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: 101
看到這個狀態就知道,主從復制成功搭建,接下來就是看同步效果咯
四、mysql用戶權限
1.創建帳戶(使用grant語句或直接操作授權表)
create 'user'@'host' idetified by 'password';
grant all privileges on *.* to 'user'@'host' identified by 'password' with grant option;
GRANT USAGE ON *.* TO 'francis'@'localhost' WITH MAX_QUERIES_PER_HOUR 100; //限制查詢
2.修改密碼
mysqladmin -u user_name -h host_name password "newpwd"
set password for 'user'@'%' = password('newpwd');
root可以直接更新密碼:set password = password('newpwd');
grant usage on *.* to 'user'@'%' identified by 'newpwd'; //指定某個帳戶的密碼而不影響帳戶當前的權限
3.flush previliges;
posted on
2012-09-16 22:42
X海陽
閱讀(130)
評論(0)
編輯
收藏
創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎總結
以上是生活随笔為你收集整理的mysql修改主从复制id_mysql主从复制设置的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 计算机二级必备快捷键知识,计算机二级考试
- 下一篇: android sse 人脸识别,基于A