安裝方式
-
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 //即可