mysql主從復制操作步驟,及常見問題

在配置主從的時候出現1032錯誤, 遠程訪問登錄不上,需要配置主的授權,和修改my.ini 配置,(具體查看 2)

1.配置主 my.cnf? centos 目錄(/etc/my.ini),錯誤日志(/var/log/mysqld.log),存儲路徑(/var/lib/mysql))

server-id? ? ? ? ? ? ? =? 35? ? ? ? ? ? ? ? ? #服務器id (主從必須不一樣)

log-bin? ? ? ? ? ? ? ? =? D:/pro/phpStudy/MySQL/mysql-bin? ? ? ? ? #打開日志(主機需要打開),這個mysql-bin也可以自定義,這里也可以加上路徑,如:/home/www/mysql_bin_log/mysql-bin

binlog-do-db? ? ? ? ? =? demo? ? ? ? ? ? ? ? # 要給從機同步的庫

2.

如果被拒絕 需要? my.ini (設置放其他用戶可以訪問)

datadir=/var/lib/mysql

socket=/var/lib/mysql/mysql.sock

skip-name-resolve

skip-grant-tables

3. 主服務器授權用戶

grant replication slave on *.* to 'root'@'192.168.174.131' identified by 'root';

grant all privileges on *.* to 'root'@'192.168.174.131' identified by 'root';? ? 所有的

flush privileges; 需要刷新下

4.? 從服務器配置

mysql -h192.168.0.3 -udemo2 -p123456? 測試遠程連接

從數據庫配置

server-id? ? ? ? ? ? ? ? ? =? 131? ? ? ? ? ? ? ? ? #服務器id (主從必須不一樣)

#作為從機的配置

master-host? ? ? ? ? ? ? ? =? 192.168.0.35? ? ? ? ? ? # 目標主機IP

master-user? ? ? ? ? ? ? ? =? root? ? ? ? ? ? ? ? # 目標主機用戶名

master-password? ? ? ? ? ? =? root? ? ? ? ? ? # 目標主機密碼

master-port? ? ? ? ? ? ? ? =? 3306? ? ? ? ? ? ? ? # 目標主機端口

master-connect-retry? ? ? =? 60? ? ? ? ? ? ? ? ? # 鏈接重連間隔(單位s)

replicate-ignore-db? ? ? ? =? mysql? ? ? ? ? ? ? # 不從主機同步的數據庫(多個寫多行)

replicate-do-db? ? ? ? ? ? =? demo? ? ? ? ? ? ? ? # 要從主機同步的庫(多個寫多行)

#log-slave-update? # 啟用從機服務器上的slave日志功能,使這臺計算機可以用來構成一個鏡像鏈(A->B->C)

slave-skip-errors? # 跳過錯誤,從機一般應該配置該項

5.查看主數據庫的bin-log狀態

show master status\G;? 獲取前兩個字段值 (主查詢)

change master to? master_host='192.168.0.35', master_user='root' ,master_password='root', master_log_file='mysql-bin.000008' ,master_log_pos=1986;

show slave status\G;? 查看狀態 (從查詢)

Slave_IO_Running: Yes

Slave_SQL_Running: Yes

只要在這個現實yes就正常了

----------------數據異常--------------------

主從賦值時候,出現數據丟失

數據丟失較多的時候可以 重做

mysqldump -h192.168.0.35 -uroot -proot demo users > mysql2.bar.sql

dmeo:為數據庫名稱

users:為表名

mysqldump -u root -p --databases test mysql > D:\backup.sql? 備份多個數據庫

mysqldump -u username -p -all-databases > BackupName.sql? 備份所有數據庫

mysql -u root -p < C:\backup.sql? 數據還原

source xxxx.sql 導入數據

mysqlhotcopy? 熱備份 比mysqldump速度快 備份需要lock table

mysql操作 鎖表

//執行SQL語句 鎖掉stat_num表

$sql = "LOCK TABLES stat_num WRITE"; //表的WRITE鎖定,阻塞其他所有mysql查詢進程

$DatabaseHandler->exeCute($sql);

//執行更新或寫入操作

$sql = "UPDATE stat_num SET `correct_num`=`correct_num`+1 WHERE stat_date='{$cur_date}'";

$DatabaseHandler->exeCute($sql);

//當前請求的所有寫操作做完后,執行解鎖sql語句

$sql = "UNLOCK TABLES";

$DatabaseHandler->exeCute($sql);

備份數據 鎖表

FLUSH TABLES WITH READ LOCK? 整個數據庫表都鎖住

LOCK TABLES tbl_name READ;? 只鎖住指定的表, 不影響其他的表

unlock tables;

P.S.? MYSQL的read lock和wirte lock

read-lock:? 允許其他并發的讀請求,但阻塞寫請求,即可以同時讀,但不允許任何寫。也叫共享鎖

write-lock: 不允許其他并發的讀和寫請求,是排他的(exclusive)。也叫獨占鎖

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容