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默認的那個數據庫。