在配置主從的時候出現(xiàn)1032錯誤俭嘁, 遠程訪問登錄不上,需要配置主的授權(quán)服猪,和修改my.ini 配置供填,(具體查看 2)
1.配置主 my.cnf? centos 目錄(/etc/my.ini),錯誤日志(/var/log/mysqld.log),存儲路徑(/var/lib/mysql))
server-id? ? ? ? ? ? ? =? 35? ? ? ? ? ? ? ? ? #服務(wù)器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 (設(shè)置放其他用戶可以訪問)
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
skip-name-resolve
skip-grant-tables
3. 主服務(wù)器授權(quán)用戶
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.? 從服務(wù)器配置
mysql -h192.168.0.3 -udemo2 -p123456? 測試遠程連接
從數(shù)據(jù)庫配置
server-id? ? ? ? ? ? ? ? ? =? 131? ? ? ? ? ? ? ? ? #服務(wù)器id (主從必須不一樣)
#作為從機的配置
master-host? ? ? ? ? ? ? ? =? 192.168.0.35? ? ? ? ? ? # 目標(biāo)主機IP
master-user? ? ? ? ? ? ? ? =? root? ? ? ? ? ? ? ? # 目標(biāo)主機用戶名
master-password? ? ? ? ? ? =? root? ? ? ? ? ? # 目標(biāo)主機密碼
master-port? ? ? ? ? ? ? ? =? 3306? ? ? ? ? ? ? ? # 目標(biāo)主機端口
master-connect-retry? ? ? =? 60? ? ? ? ? ? ? ? ? # 鏈接重連間隔(單位s)
replicate-ignore-db? ? ? ? =? mysql? ? ? ? ? ? ? # 不從主機同步的數(shù)據(jù)庫(多個寫多行)
replicate-do-db? ? ? ? ? ? =? demo? ? ? ? ? ? ? ? # 要從主機同步的庫(多個寫多行)
#log-slave-update? # 啟用從機服務(wù)器上的slave日志功能坡脐,使這臺計算機可以用來構(gòu)成一個鏡像鏈(A->B->C)
slave-skip-errors? # 跳過錯誤泄私,從機一般應(yīng)該配置該項
5.查看主數(shù)據(jù)庫的bin-log狀態(tài)
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;? 查看狀態(tài) (從查詢)
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
只要在這個現(xiàn)實yes就正常了
----------------數(shù)據(jù)異常--------------------
主從賦值時候,出現(xiàn)數(shù)據(jù)丟失
數(shù)據(jù)丟失較多的時候可以 重做
mysqldump -h192.168.0.35 -uroot -proot demo users > mysql2.bar.sql
dmeo:為數(shù)據(jù)庫名稱
users:為表名
mysqldump -u root -p --databases test mysql > D:\backup.sql? 備份多個數(shù)據(jù)庫
mysqldump -u username -p -all-databases > BackupName.sql? 備份所有數(shù)據(jù)庫
mysql -u root -p < C:\backup.sql? 數(shù)據(jù)還原
source xxxx.sql 導(dǎo)入數(shù)據(jù)
mysqlhotcopy? 熱備份 比mysqldump速度快 備份需要lock table
mysql操作 鎖表
//執(zhí)行SQL語句 鎖掉stat_num表
$sql = "LOCK TABLES stat_num WRITE"; //表的WRITE鎖定备闲,阻塞其他所有mysql查詢進程
$DatabaseHandler->exeCute($sql);
//執(zhí)行更新或?qū)懭氩僮?/p>
$sql = "UPDATE stat_num SET `correct_num`=`correct_num`+1 WHERE stat_date='{$cur_date}'";
$DatabaseHandler->exeCute($sql);
//當(dāng)前請求的所有寫操作做完后晌端,執(zhí)行解鎖sql語句
$sql = "UNLOCK TABLES";
$DatabaseHandler->exeCute($sql);
備份數(shù)據(jù) 鎖表
FLUSH TABLES WITH READ LOCK? 整個數(shù)據(jù)庫表都鎖住
LOCK TABLES tbl_name READ;? 只鎖住指定的表, 不影響其他的表
unlock tables;
P.S.? MYSQL的read lock和wirte lock
read-lock:? 允許其他并發(fā)的讀請求恬砂,但阻塞寫請求咧纠,即可以同時讀,但不允許任何寫泻骤。也叫共享鎖
write-lock: 不允許其他并發(fā)的讀和寫請求漆羔,是排他的(exclusive)。也叫獨占鎖