系统:centos 6.5 mysql版本5.6.30
mysql段
双机互信 192.168.0.31
ssh-keygen -t rsa -P ‘‘
ssh-copy-id -i ~/.ssh/id_rsa.pub [email protected]
双机互信 192.168.0.30
ssh-keygen -t rsa -P ‘‘
ssh-copy-id -i ~/.ssh/id_rsa.pub [email protected]
两台机器都需要安装如下配置,完全一样就行
yum -y install cmake
tar xf mysql-5.6.30.tar.gz
cd mysql-5.6.30
cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DMYSQL_DATADIR=/mysqldata/data -DSYSCONFDIR=/etc -DWITH_MYISAM_STORAGE_ENGINE=1 -DWITH_INNOBASE_STORAGE_ENGINE=1 -DWITH_MEMORY_STORAGE_ENGINE=1 -DWITH_READLINE=1 -DWITH_PARTITION_STORAGE_ENGINE=1 -DMYSQL_UNIX_ADDR=/tmp/mysql/mysql.sock -DMYSQL_TCP_PORT=3306 -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DENABLED_LOCAL_INFILE=1 -DEXTRA_CHARSETS=all
make -j 2 && make -j 2 install
mkdir /mydata/data -pv
创建Mysql用户
groupadd -g 3030 mysql
useradd -u 3030 -g 3030 -r -s /sbin/nologin mysql
chown mysql.mysql /mydata/data -R
chown mysql.mysql /usr/local/mysql/* -R
echo "export PATH=$PATH:/usr/local/mysql/bin" >> /etc/profile.d/mysql.sh
vim /etc/man.config更新Man文件,48行加
MANPATH /usr/local/mysql/man
mv /etc/my.cnf{,.bak}
cd /usr/local/mysql进入mysql安装目录中复制配置文件启动文件
cp support-files/my-default.cnf /etc/my.cnf
启动配置文件,如果有Ha可不需要开机中启动服务
cp support-files/mysql.server /etc/init.d/mysqld
chmod +x /etc/init.d/mysqld
chkconfig mysqld on
配置my.cnf文件
vim /etc/my.cnf
[mysqld]添加如下内容
basedir = /usr/local/mysql
datadir = /mydata/data
port = 3306
socket = /tmp/mysql/mysql.sock
./scripts/mysql_install_db --user=mysql --basedir=/usr/local/mysql/ --datadir=/mydata/data/初始化配置
[[email protected] mysql]# mysql
ERROR 2002 (HY000): Can‘t connect to local MySQL server through socket ‘/var/lib/mysql/mysql.sock‘ (2)
配置启动完成后出现如下错误配置文件时有指定mysql.sock文件目录 然后
mkdir /var/lib/mysql 如果mysql.sock不在tmp文件中,find / -name mysql.sock
ln -sv /tmp/mysql/mysql.sock /var/lib/mysql/mysql.sock
简单主从配置 :
主服务器
先配置log_bin日志 开启二进制日志
log_bin = /mysql/master/masterbin
binlog_format = mixed
server_id = 111
开启权限
grant all on *.* to ‘master‘@‘192.168.0.%‘ identified by ‘masterss‘
show master status;
从服务器
配置relay_bin日志 开启中继日志
relay_log = /mysql/relay/relay_log
binlog_format = mixed 格式为混杂模式
server_id = 222 server id主从需不从
先测试从服务器是否能连接主服务器 mysql -u master -h 192.168.0.x -pmasterss
能则继续,不能请检查iptables跟selinux是否开启,开启请关闭或者放行3306端口
进入Mysql中定义主服务器配置 user是主服务器中定义的,logfile必须跟主服务器保持一致,查询方式 show master logs;
change master to master_user=‘192.168.0.x‘,master_user=‘master‘,master_password=‘masterss‘,master_log_file=‘masterbin.000003‘,master_log_pos=120;
start slave ;开启slave
show slave status; 以下两个必须是yes,如有同步io错误请检查 log_file跟log_pos这两个必须跟主服务器日志保持一样
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
然后检查是否成功,主服务器中新建一个数据库 create database xxtest;
从服务器中使用 show databases; 查询能查询到数据库表示已经创建成功,如果没有请重新检查slave status
定义脚本监控slave是否正常
#!/bin/bash
Status=`mysql -uroot -pxiongge -e ‘show slave status\G‘ | grep "Slave_IO_Running" | awk -F: ‘{print $NF}‘ | sed ‘s/ \(Yes\)/\1/‘`
if [ $Status != "Yes" ]; then
echo "这里可以定义邮箱" #如果有sendmail可以直接mail ..xxx.com.
else
echo "123" &>/dev/null
fi
两个状态将grep更改一下就成,写两个脚本更佳、然后在crontab中定义一下计划任务,为no发送邮件、yesi输出信息
crontab -e
每分钟监控 */1 * * * * xx/xx.sh