linux安装与删除:
tar.gz包的删除是删除系统下所有的mysql相关文件
[root@DB-Server ~]#find / -name mysql
/var/spool/mail/mysql
/usr/local/mysql-5.7.5-m15-linux-glibc2.5-x86_64/include/mysql
/usr/local/mysql-5.7.5-m15-linux-glibc2.5-x86_64/bin/mysql
/usr/local/mysql-5.7.5-m15-linux-glibc2.5-x86_64/data/mysql
/usr/local/mysql
[root@DB-Server init.d]# rm -rf /usr/local/mysql-5.7.5-m15-linux-glibc2.5-x86_64/
[root@DB-Server init.d]# rm -rf /usr/local/
[root@DB-Server init.d]# rm -rf /var/spool/mail/mysql
[root@DB-Server init.d]#
3: 删除一些配置文件
配置文件一般有/etc/my.cnf 或/etc/init.d/mysql.server,视具体安装配置情况而定。
4:删除MySQL用户以及用户组
[root@DB-Server ~]# id mysql
uid=101(mysql) gid=501(mysql) groups=501(mysql) context=root:system_r:unconfined_t:SystemLow-SystemHigh
[root@DB-Server ~]# userdel mysql
安装步骤:
解压文件
tar zxvf /path/to/mysql-5.5.53-linux2.6-x86_64.tar.gz
b. 添加mysql组和mysql用户,用于设置mysql安装目录文件所有者和所属组。
[root@localhost JavaEE]#groupadd mysql
[root@localhost JavaEE]#useradd -r -g mysql mysql
*useradd -r参数表示mysql用户是系统用户,不可用于登录系统。
c. 将二进制文件解压到指定的安装目录,我们这里指定为/usr/local
[root@localhost ~]# cd/usr/local/
[root@localhost local]#tar zxvf /path/to/mysql-5.5.29-linux2.6-x86_64.tar.gz
*加压后在/usr/local/生成了解压后的文件夹mysql-5.5.29-linux2.6-x86_64,这名字太长,我们为它建立一个符号链接mysql,方便输入。
[root@localhost local]#ln -s mysql-5.5.29-linux2.6-x86_64 mysql
e. 进入mysql文件夹,也就是mysql所在的目录,并更改所属的组和用户。
[root@localhost local]#cd mysql
[root@localhost mysql]#chown -R mysql mysql.
chown -R mysql data 是给文件夹修改所有者命令
chown -R mysql(用户名) data(文件名)
[root@localhost mysql]#chgrp -R mysql mysql.
f. 执行mysql_install_db脚本,对mysql中的data目录进行初始化并创建一些系统表格。注意mysql服务进程mysqld运行时会访问data目录,所以必须由启动mysqld进程的用户(就是我们之前设置的mysql用户)执行这个脚本,或者用root执行,但是加上参数--user=mysql。
[root@localhost mysql]scripts/mysql_install_db --user=mysql
*如果mysql的安装目录(解压目录)不是/usr/local/mysql,那么还必须指定目录参数,如
[root@localhost mysql]scripts/mysql_install_db --user=mysql \
--basedir=/opt/mysql/mysql \
--datadir=/opt/mysql/mysql/data
*将mysql/目录下除了data/目录的所有文件,改回root用户所有,mysql用户只需作为mysql/data/目录下所有文件的所有者。
[root@localhost mysql]chown -R root .
[root@localhost mysql]chown -R mysql data
g. 复制配置文件
[root@localhost mysql] cp support-files/my-medium.cnf /etc/my.cnf
h. 将mysqld服务加入开机自启动项。
*首先需要将scripts/mysql.server服务脚本复制到/etc/init.d/,并重命名为mysqld。
[root@localhostmysql] cp support-files/mysql.server /etc/init.d/mysqld
*通过chkconfig命令将mysqld服务加入到自启动服务项中。
[root@localhost mysql]#chkconfig --add mysqld
*注意服务名称mysqld就是我们将mysql.server复制到/etc/init.d/时重命名的名称。
*查看是否添加成功
[root@localhost mysql]#chkconfig --list mysqld
mysqld 0:off 1:off 2:on 3:on 4:on 5:on 6:off
i. 重启系统,mysqld就会自动启动了。
//配置mysql的双master步骤
一、MySQL master-master配置
1、修改MySQL配置文件
两台MySQL均如要开启binlog日志功能,开启方法:在MySQL配置文件[MySQLd]段中加上log-bin=MySQL-bin选项
两台MySQL的server-ID不能一样,默认情况下两台MySQL的serverID都是1,需将其中一台修改为2即可
Master1配置:
#vim /etc/my.cnf
log-bin=mysql-bin //开启binlog日志功能
log =/usr/local/mysql/var/mysql.log //会打印mysql的所以sql语句
server-id= 1 //
binlog-do-db =mysql //需要同步的库名称
auto-increment-increment= 2
auto-increment-offset= 2
Master2配置:
#vim /etc/my.cnf
log-bin=mysql-bin //开启binlog日志功能
log =/usr/local/mysql/var/mysql.log //会打印mysql的所以sql语句
server-id= 2
binlog-do-db =mysql //需要同步的库名称
auto-increment-increment= 2
auto-increment-offset= 2
2、建授权用户
在10.116.65.23上新建授权用户
grant replication slave on *.* to puyin@'10.116.65.%' identified by 'puyin2016';
在10.116.65.24服务器上建授权用户
grant replication slave on *.* to puyin@'10.116.65.%' identified by 'puyin2016';
change master to master_host='10.116.65.23',master_user='puyin',master_password='puyin2016',master_log_file='mysql-bin.000006',master_log_pos=107,master_port=3306;
3、将10.116.65.24设为10.116.65.23的主服务器
将10.116.65.24设为10.116.65.23的主服务器
mysql> show master status;(23服务器配置)
1+------------------+----------+--------------+------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+----------+--------------+------------------+
| mysql-bin.000027| 106|mysql | |
+------------------+----------+--------------+------------------+
1 row in set (0.01 sec)
MySQL> change master to master_host='10.116.65.24',master_user='puyin',master_password='puyin2016',master_log_file='mysql-bin.000027',master_log_pos=106,master_port=3306;
Query OK, 0 rows affected (0.05 sec)
MySQL> start slave;
Query OK, 0 rows affected (0.00 sec)
mysql> show slave status \G
Slave_IO_Running: Yes
Slave_SQL_Running: Yes \\如果此2项都为yes,master-master配置即成功
将10.116.65.23设为10.116.65.24的主服务器 器 方法与上面设置一致只需将
在10.116.65.24上将10.116.65.23设为自己的主服务器
mysql> show master status;(24服务器配置)
1+------------------+----------+--------------+------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+----------+--------------+------------------+
| mysql-bin.000027| 106|mysql | |
+------------------+----------+--------------+------------------+
1 row in set (0.01 sec)
MySQL> change master to master_host='10.116.65.23',master_user='puyin',master_password='puyin2016',master_log_file='mysql-bin.000027',master_log_pos=106,master_port=3306;
Query OK, 0 rows affected (0.05 sec)
MySQL> start slave;
Query OK, 0 rows affected (0.00 sec)
mysql> show slave status \G
Slave_IO_Running: Yes
Slave_SQL_Running: Yes \\如果此2项都为yes,master-master配置即成功
测试是否成功:
如上述均正确配置,现在在任何一台MySQL上更新数据都会同步到另一台MySQL(仅限mysql库)
keepalived的作用是,再两台机器(10.116.65.23和10.116.65.24)上都安装好之后,配置文件里指定virtual_ipaddress也就是vip(10.116.65.25虚ip),
指定每台机器的priority(优先级一台为255 一台为10),这时在外部连接10.116.65.25实际上连接的就是10.116.65.23这台机器,如果10.116.65.23上的keepalived服务
意外停止之后,vip会自动漂移到10.116.65.24上,外界连接25实际上连接的就是24这台服务器,这样在外界看来服务器一直在正常使用
keepalived和mysql结合起来是有就是,keepalived里有一个自动去检测virtual_ipaddress 10.116.65.23 3306的配置,如果3306端口挂了,就会自动执行notify_down指定的
shell脚本(这个shell脚本里是杀死keepalived进程,这时因为keepalived进程死了,所以自动漂移到24这台服务器上,使用24上的mysql数据库)
这种情况的前提是两台服务器的数据库必须保持一致,这时就要配置两台mysql的主从关系了,配置好之后实现的效果是,你在23上增删改数据24上也自动进行更改,在24上
更改数据23上也相应有变化,时刻保持数据的一致性。配置mysql主从步骤在上面。
//keepalived配置文件
! Configuration File for keepalived
global_defs {
notification_email {
[email protected]
[email protected]
[email protected]
}
notification_email_from [email protected]
smtp_server 192.168.200.1
smtp_connect_timeout 30
router_id LVS_DEVEL
vrrp_skip_check_adv_addr
vrrp_strict
vrrp_garp_interval 0
vrrp_gna_interval 0
}
vrrp_instance VI_1 {
state MASTER
interface ens160
virtual_router_id 58
priority 255
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
10.116.65.25
}
}
virtual_server 10.116.65.25 3306 {
delay_loop 6
#lb_algo wrr
#lb_kind DR
persistence_timeout 10
protocol TCP
real_server 10.116.65.23 3306 {
weight 3
notify_down /usr/local/mysql/my.sh #检测到服务down后执行的脚本
TCP_CHECK {
connect_timeout 3 #连接超时时间
nb_get_retry 2 #重连次数
delay_before_retry 3 #重连间隔时间
connect_port 3306 #健康检查端口
}
}
}
keepalived安装过程
1、解压
tar zxvf /usr/local/keepalived.tar.gz
将解压后的文件更名为keepalived
./configure --prefix=/usr/local/keepalived
//如果出现错误提示,问题是缺东西,需要yum
yum -y install openssl-devel
安装
make &&make install
2、//设置keepalived的配置文件路径以及启动服务快捷方式,开机启动等。
mkdir /etc/keepalived
cp /usr/app_server/keepalived/etc/keepalived/keepalived.conf /etc/keepalived/keepalived.conf
cp /usr/app_server/keepalived/etc/rc.d/init.d/keepalived /etc/init.d/
cp /usr/app_server/keepalived/etc/sysconfig/keepalived /etc/sysconfig/
cp /usr/app_server/keepalived/sbin/keepalived /usr/sbin/
chkconfig --level 2345 keepalived on #注册开机启动
3、运行时可能会遇到问题permission denied 给相应文件赋予执行权限X
防火墙可能导致keepalived不自动切换(测试的时候最好先关闭防火墙,能测试通过之后再考虑防火墙规则设置)
keepalived的自动检测的notify_down无法执行,导致mysql服务断掉时无法去切断keepalived从而导致vip无法漂移
现在采用linux定时任务的办法来实现该功能,写shell脚本检测mysql服务,如果包含mysqld_safe表示mysql在运行,否则
表示mysql服务断开,则自动kill keepalived服务。然后把该脚本加入到linux的定时任务crontab中,每分钟执行一次。
键入 crontab -e 编辑crontab服务文件*/1 * * * * /usr/local/mysql/checkMysql.sh
输入i表示开始编辑,编辑完之后输入esc表示进入命令模式,然后输入:wq表示保存并退出 输入:q!表示退出不保存
checkMysql.sh脚本如下:
#!/bin/bash
resp=`ps -ef | grep mysqld`
if [[ $resp =~ "mysqld_safe" ]]
then
echo "mysql running"
else
pkill keepalived
fi
//注释 if then else fi是linux shell脚本的if else格式 echo是输出文字命令
//`ps -ef | grep mysqld` 是检测mysqld的状态命令,这里注意两边的`号,然后将得到的结果赋值给变量resp
// [[ $resp =~ "mysqld_safe" ]] 是用来判断resp里是否包含mysqld_safe字符串,如果包括输出mysql running 否则杀死keepalived进程。
主从同步可能会出现一些问题:如下
两个数据库也无法正常同步,使用 showslave status\G命令查看之后发现,数据库23服务器上的slave正常运行,而数据库24服务器上的slave未正常,遇到如下问题:
经检测之后发现是在2016-12-19号导入currencyratedaily表数据时主键冲突,导致24同步出现问题无法同步,这时有两种处理方案:1、在mysql的配置文件/my.cnf中加入如下代码slave_skip_errors = 1062,然后重新启动mysql服务。Slave可正常工作,也就是忽略错误继续同步2、完全数据同步