最近公司啓動了一個新項目,要在suse上搭建mysql5.7,用慣了紅帽,真的不得不吐槽一下suse,尤爲是對於歷來沒用過的人來講,簡直坑爹。node
話很少說,來點乾貨mysql
suse系統 mysql5.7版本安裝源sql
http://repo.mysql.com/yum/mysql-5.7-community/sles/11/x86_64/安全
卸載mysql5.7rpm包的方法:app
rpm -e --nodeps mysql-community-common-5.7.16-1.sles11socket
rpm -e --nodeps mysql-community-devel-5.7.16-1.sles11ide
rpm -e --nodeps mysql-community-libs-5.7.16-1.sles11測試
rpm -e --nodeps mysql-community-embedded-5.7.16-1.sles11.net
rpm -e --nodeps mysql-community-client-5.7.16-1.sles11rest
rpm -e --nodeps mysql-community-embedded-devel-5.7.16-1.sles11
rpm -e --nodeps mysql-community-server-5.7.16-1.sles11
RPM安裝mysql5.7
mkdir -p /data/mysql
groupadd -g 1103 mysql
useradd -u 1103 -g mysql -d /data/mysql -s /sbin/nologin mysql
mkdir -p /data/app_logs/mysql
cd /data/
chmod 755 mysql
chmod 755 app_logs
chown mysql.mysql mysql -R
cd app_logs/
chown mysql.mysql mysql/ -R
cd /data/app_logs/
chmod 755 mysql/
cd /opt
rpm -ivh mysql-community-*
/usr/sbin/mysqld --initialize --user=mysql --basedir=/usr --datadir=/data/mysql 初始化 注意權限問題 ---/data 目錄若是不是755 沒法完成初始化
cd /usr/share/mysql/
cp my-default.cnf /etc/my.cnf
vi /etc/my.cnf
mysql-master配置
log-bin=mysql-bin
innodb_flush_log_at_trx_commit=1
sync_binlog=1
log-slave-updates
skip-name-resolve
server_id = 214 #本機IP最末段
mysql-slave 配置
log_bin=mysql-bin
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLE
relay-log = mysql-relay
relay-log-index = relay-relay-bin.index
relay-log-info-file=relay-relay-log.info
server_id = 215 #本機IP最末段
datadir=/data/mysql #數據存放位置
socket=/var/lib/mysql/mysql.sock
log-error=/data/app_logs/mysql/mysqld.log
pid-file=/var/run/mysql/mysqld.pid
character-set-server = utf8 #字符集
slow_query_log = 1 #開啓慢日誌查詢
slow_query_log_file = /data/app_logs/mysql/mysql-slow.log #慢日誌位置
/usr/bin/mysqld_safe --user=mysql --skip-grant-tables --skip-networking & 安全模式進入
2016-11-03T05:48:34.192512Z mysqld_safe Logging to '/data/app_logs/mysql/mysqld.log'.
2016-11-03T05:48:34.266059Z mysqld_safe Starting mysqld daemon with databases from /data/mysql
另開一個終端:
mysql
mysql> update mysql.user set authentication_string=password('password') where user='root';
mysql>flush privileges;
結束安全模式, ctrl+c
若是不能結束,用kill 殺掉進程,直接就進程殺吧~
/etc/init.d/mysql restart
mysql -u root -p
Enter password:
mysql> use mysql; --測試密碼是否生效,通常都不生效,執行下一步
mysql> SET PASSWORD = PASSWORD("password"); 重置密碼
mysql> ALTER USER root@localhost PASSWORD EXPIRE NEVER;
mysql> flush privileges;
mysql> use mysql;
mysql> show variables like 'datadir'; #查看數據存放位置
mysql> show variables like "%char%"; #查看字符集
設置主從、
master:
mysql>grant replication slave on *.* to slave@x.x.x.x identified by '123456';
mysql>flush tables with read lock;
mysql>show master status;
slave:
mysql>change master to master_host='x.x.x.x',master_port= 3306,master_log_file='mysql-bin.000003',master_log_pos=451,master_user='slave',master_password='123456';
mysql>start slave;
mysql>show slave status\G;
mysql> show slave status\G;
*************************** 1. row ***************************
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
測試
好了,基本就搭建完了。若是有大神感受此文有什麼不足,請幫忙指點。