qileilove

          blog已經轉移至github,大家請訪問 http://qaseven.github.io/

          兩種方法解決MySQL主從不同步

          今天發現Mysql的主從數據庫沒有同步

            先上Master庫:

            mysql>show processlist;   查看下進程是否Sleep太多。發現很正常。

            show master status; 也正常。

            mysql> show master status;

            +-------------------+----------+--------------+-------------------------------+
            | File              | Position | Binlog_Do_DB | Binlog_Ignore_DB              |
            +-------------------+----------+--------------+-------------------------------+
            | mysqld-bin.000001 |     3260 |              | mysql,test,information_schema |
            +-------------------+----------+--------------+-------------------------------+

            1 row in set (0.00 sec)

            再到Slave上查看

            mysql> show slave status\G

            Slave_IO_Running: Yes

            Slave_SQL_Running: No

            可見是Slave不同步

            下面介紹兩種解決方法:

            方法一:忽略錯誤后,繼續同步

            該方法適用于主從庫數據相差不大,或者要求數據可以不完全統一的情況,數據要求不嚴格的情況

            解決:

            stop slave;

            #表示跳過一步錯誤,后面的數字可變

            set global sql_slave_skip_counter =1;

            start slave;

            之后再用mysql> show slave status\G  查看:

            Slave_IO_Running: Yes

            Slave_SQL_Running: Yes

            ok,現在主從同步狀態正常了。。。

            方式二:重新做主從,完全同步

            該方法適用于主從庫數據相差較大,或者要求數據完全統一的情況

            解決步驟如下:

            1、先進入主庫,進行鎖表,防止數據寫入

            使用命令:

            mysql> flush tables with read lock;

            注意:該處是鎖定為只讀狀態,語句不區分大小寫

           2、進行數據備份

            #把數據備份到mysql.bak.sql文件

            [root@server01 mysql]#mysqldump -uroot -p -hlocalhost > mysql.bak.sql

            這里注意一點:數據庫備份一定要定期進行,可以用shell腳本或者python腳本,都比較方便,確保數據萬無一失

            3、查看master 狀態

            mysql> show master status;

            +-------------------+----------+--------------+-------------------------------+
            | File              | Position | Binlog_Do_DB | Binlog_Ignore_DB              |
            +-------------------+----------+--------------+-------------------------------+
            | mysqld-bin.000001 |     3260 |              | mysql,test,information_schema |
            +-------------------+----------+--------------+-------------------------------+

            1 row in set (0.00 sec)

            4、把mysql備份文件傳到從庫機器,進行數據恢復

            #使用scp命令

            [root@server01 mysql]# scp mysql.bak.sql root@192.168.128.101:/tmp/

            5、停止從庫的狀態

            mysql> stop slave;

            6、然后到從庫執行mysql命令,導入數據備份

            mysql> source /tmp/mysql.bak.sql

            7、設置從庫同步,注意該處的同步點,就是主庫show master status信息里的| File| Position兩項

            change master to master_host = '192.168.128.100', master_user = 'rsync', master_port=3306, master_password='', master_log_file = 'mysqld-bin.000001', master_log_pos=3260;

            8、重新開啟從同步

            mysql> start slave;

            9、查看同步狀態

            mysql> show slave status\G  查看:

            Slave_IO_Running: Yes

            Slave_SQL_Running: Yes

            好了,同步完成啦。

          posted on 2013-01-14 11:46 順其自然EVO 閱讀(379) 評論(0)  編輯  收藏 所屬分類: 數據庫

          <2013年1月>
          303112345
          6789101112
          13141516171819
          20212223242526
          272829303112
          3456789

          導航

          統計

          常用鏈接

          留言簿(55)

          隨筆分類

          隨筆檔案

          文章分類

          文章檔案

          搜索

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 应用必备| 武隆县| 垣曲县| 青阳县| 慈利县| 孟津县| 灌阳县| 和田市| 胶南市| 元阳县| 铁岭县| 林州市| 凤庆县| 柯坪县| 突泉县| 新民市| 高青县| 东乌珠穆沁旗| 莱西市| 宿松县| 文安县| 土默特右旗| 扶沟县| 茶陵县| 上饶县| 卢湾区| 太白县| 巴东县| 虹口区| 文昌市| 平舆县| 柯坪县| 磴口县| 邓州市| 祁连县| 乾安县| 儋州市| 嘉黎县| 阳原县| 洪湖市| 益阳市|