Mysql 主主配置
Posted 云来云去-起飞
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Mysql 主主配置相关的知识,希望对你有一定的参考价值。
一、前言:
大家都知道,mysql的主从复制的原理了,整个过程都是靠着两个日志和三个线程进行操作的,那么今天我们来玩玩主主,看看主主的这种互相同步又互为从的方式,是怎么做的。
二、部署方式
2.1.分别A机和B机安装5.6.26版的mysql数据库
#!/bin/bash
#mysql 5.6版本的安装(记得把mysql-5.6.26.tar.gz压缩包放到/opt下面)
#安装依赖包
yum -y install gcc gcc-c++ ncurses ncurses-devel bison cmake autoconf
cd /opt
tar xzvf mysql-5.6.26.tar.gz
#进入文件夹下面
cd /opt/mysql-5.6.26/
cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DEXTRA_CHARSETS=all -DSYSCONFIDIR=/etc -DMYSQL_DATADIR=/home/mysql/ -DMYSQL_UNIX_ADDR=/home/mysql/mysql.sock
make && make install
#为mysql创建一个管理用户mysql
useradd -s /sbin/nologin mysql
##把默认配置文件复制到mysql自带的配置文件/etc/my.cnf中;
#复制mysql.server复制到service服务下并改名mysqld;做开机启动脚本
#将文件进行覆盖
cp support-files/my-default.cnf /etc/my.cnf
cp support-files/mysql.server /etc/init.d/mysqld
#进行提权
#更改管理主/组
chmod 755 /etc/init.d/mysqld
chkconfig --add /etc/init.d/mysqld
##配置开机自启
chkconfig mysqld --level 35 on
#递归更改属主属组
chown -R mysql:mysql /usr/local/mysql/
chown mysql:mysql /etc/my.cnf
#写入环境变量
echo 'PATH=$PATH:/usr/local/mysql/bin' >> /etc/profile
source /etc/profile
#数据库初始化
/usr/local/mysql/scripts/mysql_install_db --user=mysql --ldata=/var/lib/mysql --basedir=/usr/local/mysql --datadir=/home/mysql
#更改配置文件
sed -i '46c basedir=/usr/local/mysql' /etc/init.d/mysqld
sed -i '47c datadir=/home/mysql' /etc/init.d/mysqld
#设软连接
ln -s /usr/local/mysql/bin/mysql /usr/sbin
ln -s /usr/local/mysql/bin/mysqlbinlog /usr/sbin
#开启mysqld服务
service mysqld start
netstat -ntap|grep 3306
2.2.进行配置my.cnf文件
进行修改/etc/my.cnf
- A机的配置
server-id = 1 #这个id一定不要和B机一致
log_bin=master-bin
log_slave=updates=true
auto_increment_offset =1 #奇数ID
auto_increment_increment = 2
skip-character-set-client-handshake #忽略应用程序想要设置的其他字符集
init-connect='SET NAMES utf8' #连接时执行的SQL
character-set-server=utf8 #服务端默认字符集
wait_timeout=1800 #请求的最大连接时间
interactive_timeout=1800 #和上一参数同时修改才会生效
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES #sql模式
- B机配置
server-id = 2
log_bin=master-bin
log_slave=updates=true
auto_increment_offset =2 #偶数ID
auto_increment_increment = 2
skip-character-set-client-handshake #忽略应用程序想要设置的其他字符集
init-connect='SET NAMES utf8' #连接时执行的SQL
character-set-server=utf8 #服务端默认字符集
wait_timeout=1800 #请求的最大连接时间
interactive_timeout=1800 #和上一参数同时修改才会生效
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES #sql模式
注意:配置字符集,如果服务端配置了,那么连接执行sql 必须也要配置字符集,不然默认为其他字符集,可能导致同步失败
2.3.赋权限
A机:grant replication slave on *.* to 'myslave'@'B机的IP' identified by '123456';
flush privileges;
B机:grant replication slave on *.* to 'myslave'@'A机的IP' identified by '123456';
flush privileges;
2.4.查看两台机器主的二进制文件及最后的同步位置(记录下来)
show master status;
2.5.分别在两台服务器上设置对端为从服务器
A机中配置:change master to master_host='B机的地址',master_port=3306,master_user='myslave',master_password='123456',master_log_file='B机的二进制文件',master_log_pos=B机同步的位置;
start slave;
B机中配置:change master to master_host='A机的地址',master_port=3306,master_user='myslave',master_password='123456',master_log_file='A机的二进制文件',master_log_pos=A机同步的位置;
start slave;
三、验证结果
#A机
mysql -uroot -p
create database test20;
#B机
mysql -uroot -p
create database test21
以上是关于Mysql 主主配置的主要内容,如果未能解决你的问题,请参考以下文章