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 主主配置的主要内容,如果未能解决你的问题,请参考以下文章

实战MYSQL 8.0.12 主主复制配置过程

MySQL主主复制(双主复制)配置过程介绍

Keepalived+Lvs+Mysql主主复制

mysql主主同步

安全最重要!MySQL配置主从复制,主主复制

MySQL主主复制试验