最近公司启动了一个新项目,要在suse上搭建mysql5.7,用惯了红帽,真的不得不吐槽一下suse,尤其是对于从来没用过的人来说,简直坑爹。
话不多说,来点干货
suse系统 mysql5.7版本安装源
http://repo.mysql.com/yum/mysql-5.7-community/sles/11/x86_64/
卸载mysql5.7rpm包的方法:
rpm -e --nodeps mysql-community-common-5.7.16-1.sles11
rpm -e --nodeps mysql-community-devel-5.7.16-1.sles11
rpm -e --nodeps mysql-community-libs-5.7.16-1.sles11
rpm -e --nodeps mysql-community-embedded-5.7.16-1.sles11
rpm -e --nodeps mysql-community-client-5.7.16-1.sles11
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
测试
好了,基本就搭建完了。如果有大神感觉此文有什么不足,请帮忙指点。