Linux安裝MySql以及主從配置

安裝方式

  • yum install -y mysql-server #yum安裝,需要外網環境

  • 將rpm文件,傳送給linux,然後,通過rpm指令完成安裝

  • yum install yum-plugin-downloadonly 下載yum download插件,可以不安裝只下載安裝包

  • yum install -y mysql-server --downloadonly --downloaddir=/usr/local 下載安裝包到 /usr/local

  • rpm -ivh perl-*.rpm #安裝所有perl依賴

  • rpm -Uvh mysql-libs-5.1.73-7.el6.i686.rpm #更新mysql的類庫

  • rpm -ivh mysql-5.1.73-7.el6.i686.rpm mysql-server-5.1.73-7.el6.i686.rpm #安裝mysql主服務

  • yum -y install wget 下載wget工具

    wget -P /root http://repo.mysql.com/mysql-community-release-el7-5.noarch.rpm 下載某文件到 /root目錄

啓動mysql服務

  • chkconfig 查看服務
  • service mysqld start/stop/restart/status mysql服務的開啓、停止、重啓和狀態
  • 如下命令,在初次開啓mysql服務後,會提示給用戶
    mysqladmin -u root password '123';
    如果已經有密碼存在,要修改的話
    mysqladmin -u root -p password 'new_pwd'; 之後輸入舊密碼回車即可

遠程權限

  • 到mysql庫的user表中
  • update user set host='%',password=password('123456') where host='127.0.0.1'; #添加可以遠程訪問的賬號,%表示任何【網關】,只要有該數據庫的賬戶和密碼就都可以訪問
  • flush privileges; #必須刷新權限,保證新添加的賬號可用
  • 關閉linux的防護牆,保證3306可以訪問

防止mysql本地客戶端數據亂碼(瞭解)

/etc/my.cnf 中添加如下配置,即可
[client]
default-character-set=utf8

如上配置只作用客戶端,要保證程序中數據不亂碼:建庫,建表時必須指定統一的字符集即可

注意,新建庫的時候使用【default charset=utf8】

新建表的時候使用【engine=innodb default charset=utf8】

mysql卸載

  • rpm -e mysql-server #只需卸載主服務即可
  • rm -rf /var/lib/mysql #刪除所有mysql的數據

root密碼找回

  • 到 /etc/my.cnf下添加配置

    [mysqld]
    ...
    skip-grant-tables   #注意,建議在拆除網線的情況下添加  (而且添加配置後,需要重啓mysqld服務)
    
  • mysql -u root -p即可登錄mysql

  • update user set password=password(‘123’) where xxxxxx;//修改密碼
    flush privileges;即可

  • 將my.cnf的配置刪除或註釋


Mysql主從架構

一般情況下,會有會有一個主機,主要負責增刪改,配有很多的從機,只能進行讀取,這樣保證了 讀寫分離,釋放了主機的壓力。

另外,一般公司都會將數據庫放於內網,連接內網的人員都可以訪問,內網與tomcat進行連接,這裏是有網關的限制,非該內網網關不能訪問內網,然後tomcat的另一端開放端口,供公網使用。

1. 克隆虛擬機

在克隆從機刪除如下配置

克隆的虛擬機的網絡適配,使得虛擬機可以進入局域網

  • vi /etc/sysconfig/network-scripts/ifcfg-eth0
  • 刪除 HWADDR所在行
    UUID所在行
  • 將/etc/udev/rules.d/目錄中的
    70-persistent-net.rules文件刪除
  • 重啓虛擬機:reboot

2. 兩臺主機,各自安裝mysql

參考之前的mysql安裝過程即可.

一臺做主機,一臺做從機。

注意必須修改 my.cnf文件爲utf-8格式

3. 搭建數據庫

主機和從機上的庫名一致

注意,新建庫的時候使用【default charset=utf8】

新建表的時候使用【engine=innodb default charset=utf8】

4. 配置"主機"

4.1 配置

找到 /etc/my.cnf
在[mysqld]下配置:

server-id=9        // id
log-bin=zhj-bin    // 二進制日誌文件的名稱,有此配置即爲“主機”
binlog-do-db=db9   // 要記錄二進制日誌的數據庫,可以有多個,如下
binlog-do-db=db10
binlog-do-db=db11 
binlog_format=MIXED  // 兼容 日誌和read-commit
expire_logs_days=10  // 日誌超時時間

4.2 重啓主機

重啓主機:service mysqld restart

4.3 查看主機狀態

查看主機狀態:

mysql>show master status;
*記錄下file字段值,和position字段值以及Binlog_Do_DB,要告知給從機
rj-bin.000001  106 db01

5. 配置"從機"

5.1 配置

找到 /etc/my.cnf
在[mysqld]下配置:

server-id=10
replicate-do-db=db01 #要複製的哪個庫
master-connect-retry=60 #60s後重連主機

#注意關閉防火牆

5.2 同步數據

同步主從數據

如果主機已經有數據,則需要將數據同步到從機

#主機導出數據庫db9中的數據:
[root@zhj ~]# mysqldump -u root -h 192.168.80.128 -p db01 > /root/hh.sql (之後輸入密碼即可)
在root目錄下找到對應的hh.sql文件放到從機中,然後執行下面的方法,注意文件必須是【utf-8】格式
需要通過win主機進行中轉才能導入到另一個虛擬機中
#從機登錄mysql,並選擇數據庫db9,然後執行如下:
mysql> use db9;
mysql> source /root/hh.sql;

5.3 重啓從機

重啓從機

[root@zhj ~]# service mysqld restart

5.4 主從同步

在從機下配置
[root@zhj ~]# mysql -u root -p111111 # 登錄mysql
mysql> slave stop;   #停止slave同步進程
mysql> change master to master_host='192.168.1.66',master_user='root'
						,master_password='123',master_log_file='rj-bin.000001',master_log_pos=106;
mysql> slave start;    #開啓slave同步進程

5.5 查看從機狀態

mysql> SHOW SLAVE STATUS\G   #查看slave同步信息(G後不要加分號)

注意查看:
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
以上這兩個參數的值爲Yes,即說明配置成功!

如果Slave_SQL不同步,則執行下面代碼,解決因爲事務回滾導致的問題:

mysql> slave stop;

``mysql> set GLOBAL SQL_SLAVE_SKIP_COUNTER=1;`

mysql> slave start;

6. 細節

mysql的bin-log和read-commit有衝突

需要在主機的my.cnf的[mysqld]中配置:

binlog_format=mixed //即可

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章