linux小白 mysql單機主從同步簡單配置

1、使用mysqld_multi新建mysql實例(注:本實例mysql安裝在/usr/local下)mysql

# vi my.cnf       #進入mysql配置文件添加如下四行sql

[mysqld_multi]數據庫

mysqld=/usr/local/mysql/bin/mysqld_safe服務器

mysqladmin=/usr/local/mysql/bin/mysqladminsocket

user=mysqlide


修改my.cnf配置文件,尾處添加如下幾行:測試

[mysqld2]spa

replicate-do-db=class      #指定須要同步的數據庫名(此例DB_NAME=class)rest

replicate-ignore-db=mysql      #不須要同步的數據庫名日誌

port=3307 #從數據庫端口號,也能夠改成其餘的,只要不佔用系統中端口號就行

socket=/tmp/mysqld2.sock      #指明從數據庫sock路徑

pid-file=/tmp/mysql2.pid      #從數據庫pid路徑

datadir=/usr/local/mysql2/var      #從數據庫目錄路徑

log=/usr/local/mysql2/mysql2.log      #從數據庫日誌路徑


server-id=3

master-host=localhost                 #主的IP,單機麼就直接localhost

master-user=root    #主數據庫的用戶名,通常咱們一個數據庫一個用戶與密碼,這邊偷懶直接root了

master-password=123456      #主數據庫用戶名的密碼,測試環境下簡單粗暴root密碼


若是(單機環境中)須要一主多從,則複製以上[mysqld2]這段,稍作修改就能夠了。


--------------初始化第二個數據庫------------------

mysql_install_db --datadir=/usr/local/mysql2/var --user=mysql


--------------啓動mysql2--------------------------

mysqld_multi start 2


--------------使用socket登陸實例------------------

mysql -uroot -S/tmp/mysql2.sock


--------------進入mysql設置root用戶密碼-----------

set password for 'root'@'localhost'=password('123456')


退出mysql後,重啓mysql服務(注:通常維護重啓數據庫順序,先停從mysql2,再直接重啓主mysql,最後等主的起來後再把從mysql開啓,這樣就不太會引發主從報錯。

mysqld_multi stop 2          #停

/etc/init.d/mysqld restart   #重啓

mysqld_multi start 2     #啓動


-------------主服務器宕機後主從報錯--------------- 

假如主服務器宕機後或者服務停了,再次開啓則mysql主從會報錯,避免從新change master這個操做,維護時重啓數據庫順序要記住,這是我認爲的哈。


接下來咱們解決報錯方法:(通常爲這個報錯,若是主從上面status中mysql-bin.*****和pos值都一致的話,那就要找度娘了)

1.在主服務器上執行

   mysql> show master status;

   +------------------+----------+--------------+------------------+

   | File             | Position | Binlog_Do_DB | Binlog_Ignore_DB |

   +------------------+----------+--------------+------------------+

   | mysql-bin.000004 |      308 |              |                  |

   +------------------+----------+--------------+------------------+

   1 row in set (0.00 sec)

2.在從服務器上執行

   mysql> change master to master_host='127.0.0.1',master_user='root',master_password='123456',master_log_file='mysql-bin.000004',master_log_pos=308;         #注:master_log_pos=308 中308沒有引號,是裸的。


接下來開啓從服務器的複製功能

   Mysql> start slave;


最後咱們在從mysql中執行

   Mysql> show slave status \G


顯示如下就說明簡單mysql單機主從完成了

*************************** 1. row ***************************

             Slave_IO_State: Waiting for master to send event

                Master_Host: localhost

                Master_User: root

                Master_Port: 3306

              Connect_Retry: 60

            Master_Log_File: mysql-bin.000001

        Read_Master_Log_Pos: 272

             Relay_Log_File: mysql2-relay-bin.000003

              Relay_Log_Pos: 235

      Relay_Master_Log_File: mysql-bin.000001

           Slave_IO_Running: Yes          #這條和下面那條要同時爲yes狀態。

          Slave_SQL_Running: Yes

            Replicate_Do_DB: class        #這個就是咱們前面指定同步的數據庫名

        Replicate_Ignore_DB: mysql  #這個是咱們忽略,不須要同步的數據庫名,通常都爲mysql默認的那個數據庫。

相關文章
相關標籤/搜索