mac配置mysql單機多實例主從

## mac配置mysql單機多實例主從

假設(shè)mac上已經(jīng)安裝好一個可以運行的mysql,運行情況如下

***

?? ~ ps -ef |grep mysql

501 98726 98386? 0 11:57下午 ttys003? ? 0:06.33 /usr/local/Cellar/mysql/5.7.17/bin/mysqld --basedir=/usr/local/Cellar/mysql/5.7.17 --datadir=/usr/local/var/mysql --plugin-dir=/usr/local/Cellar/mysql/5.7.17/lib/plugin --log-error=/usr/local/var/mysql/bogon.err --pid-file=/usr/local/var/mysql/bogon.pid --socket=/private/tmp/mysql.sock --port=3306

***

可以看到mysql的datadir,啟動的程序/usr/local/Cellar/mysql/5.7.17/bin/mysqld,pid信息等。

mac的my.cnf路徑在/private/etc/my.cnf。

### 實現(xiàn)步驟如下

- 創(chuàng)建一個slave目錄(我的slave在/usr/local/opt/mysql_slave)

- mkdir -p /usr/local/opt/mysql_slave

- 在/private/etc/my.cnf中修改配置(主從共用一個my.cnf),加入slave的路徑信息。配置片段如下

***

[mysqld2]

server-id=3307

replicate-do-db=test1? ? ? ? ? ? #指定需要同步的數(shù)據(jù)庫名(此例DB_NAME=class)

replicate-ignore-db=vipkid,testvk,disconf,azkaban? ? ? ? #不需要同步的數(shù)據(jù)庫名

port=3307? ? ? #從數(shù)據(jù)庫端口號,也可以改為其他的,只要不占用系統(tǒng)中端口號就行

socket=/usr/local/opt/mysql_slave/mysqld_slave.sock? ? ? ? ? #指明從數(shù)據(jù)庫sock路徑

pid-file=/usr/local/opt/mysql_slave/mysql.pid? ? ? ? ? #從數(shù)據(jù)庫pid路徑

datadir=/usr/local/opt/mysql_slave/var? ? ? ? #從數(shù)據(jù)庫目錄路徑

relay_log=mysql-relay-bin? ? ? ? ? #中繼日志(通過I/O線程從主庫中復(fù)制的日志)

log_slave_updates=1? ? ? ? ? ? #允許備庫將其重放時間也記錄在自身的日志文件中

read_only=1? ? ? ? #阻止任何沒有特權(quán)權(quán)限的線程修改數(shù)據(jù)

***

其中只有server-id為必須字段

- 初始化一個新的mysql實例(datadir中生成初始化的文件)

- 版本mysql 5.7.17,初始化時會加載my.cnf的[mysqld]段的配置

***

?? ~ sudo mysqld --initialize --basedir=/usr/local/Cellar/ mysql/5.7.17 --datadir=/usr/local/opt/mysql_slave/var

***

初始化后會在控制臺打出一堆log,其中包含生成的臨時密碼,如下

***

[Note] A temporary password is generated for root@localhost: jt=FV,ytu8.,

***

用戶名:root,密碼為jt=FV,ytu8.,登錄mysql修改臨時密碼

***

?? ~ mysql -uroot -pjt=FV,ytu8., -S /usr/local/opt/mysql_slave/mysqld_slave.sock

mysql>set password = '123456';

***

此時登錄slave的用戶名為root,密碼為123456。

- my.cnf的[mysqld]段的配置如下

***

[mysqld]

sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES

port=3306

socket=/private/tmp/mysql.sock

pid-file=/usr/local/var/mysql/bogon.pid

datadir=/usr/local/var/mysql

user=yy

server_id=1011? ? ? ? ? #唯一的服務(wù)器ID

log-bin=mysql-bin? ? ? #二進(jìn)制日志文件

log-bin-index=mysql-bin.index

character_set_server=utf8

***

其中server_id和log-bin是必須字段

- 啟動(注意看log)

***

mysql.server start? ? ? #啟動master的3306端口的mysql,也就是[mysqld]中的mysql

sudo mysqld_multi start 2? ? ? ? #啟動slave的mysql,[mysqld2]對應(yīng)2

***

啟動中遇到的各種問題都通過log查看,log路徑在my.cnf指定,my.cnf其他段的內(nèi)容如下:

***

[mysqld_safe]

log-error=/usr/local/var/mysql/bogon.err

pid-file=/usr/local/var/mysql/bogon.pid

[mysqld_multi]

mysqld=/usr/local/opt/mysql/bin/mysqld_safe

mysqladmin=/usr/local/opt/mysql/bin/mysqladmin

user=yy

***

- 登錄主從數(shù)據(jù)庫

***

#主數(shù)據(jù)庫:

?? ~ mysql -uroot -p -S /private/tmp/mysql.sock

#確認(rèn)主庫是否創(chuàng)建了二進(jìn)制文件,也就是my.cnf中的log_bin是否配置

mysql>show master status\G

#主庫創(chuàng)建復(fù)制賬號,這是一個特權(quán)賬號,只能從二進(jìn)制日志中獲取數(shù)據(jù)

mysql>grant replication slave, replication client on *.* to slave@'127.0.0.1' identified by 'slavepassword';

mysql>flush privileges;

#從數(shù)據(jù)庫:

?? ~ mysql -uroot -p -S /usr/local/opt/mysql_slave/mysql.sock

#從庫狀態(tài)Slave_IO_State、Slave_IO_Runing和Slave_SQL_Runing顯示從庫復(fù)制是夠運行

mysql>show slave status\G

#從庫連接主庫動作, master_log_pos設(shè)置為0,即從開始位置讀起

mysql>change master to master_host='192.168.10.107', master_port=3306, master_user='slave', master_password='password', master_log_file='mysql-bin.000018', master_log_pos=0;

#運行命令開始復(fù)制

mysql>start slave;

#其他命令

#查看server_id

mysql>show variables like 'server_id';

#查看線程

mysql>show processlist\G

***

###遇到的問題

- 處理一則MySQL Slave環(huán)境出現(xiàn)ERROR 1201 (HY000): Could not initialize master info structure的案例。

http://blog.itpub.net/7607759/viewspace-719707/

- RESET SLAVE;

- 刪除主從目錄下的master.info elay-log.info。然后嘗試重新執(zhí)行change master。

- 沒有讀取權(quán)限

- chown -R mysql.mysql /data/mysql

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容