linux mysql双主模式搭建(本人亲测有效)

 

目录

一、主节点安装

1、下载mysql安装包

2、解压

3、编辑配置文件  vim /etc/my.cnf 

4、初始化

5、启动服务

6、设置登录用户

7、mysql开机自启动

二、主从模式配置

主节点128配置

1、主节点128构建用于同步的用户

从节点129配置

1、从节点129配置文件如下

2、查看主节点128的日志名称和同步起始位置

3、从节点129同步主节点128信息

三、双主模式

1、从服务器构建用于同步的用户

2、查看从节点129日志名称和同步起始位置

3、主节点128同步从节点129数据

4、查看128节点状态


节点说明:

主节点:192.168.253.128

从节点:192.168.253.129

一、主节点安装

1、下载mysql安装包

https://cdn.mysql.com//archives/mysql-5.7/mysql-5.7.21-linux-glibc2.12-x86_64.tar.gz

将安装包务必解压到 /usr/local/mysql 目录

2、解压

构建组

groupadd mysql

建用户

useradd -r -g mysql mysql

赋权

chown -R mysql:mysql /usr/local/mysql/

3、编辑配置文件  vim /etc/my.cnf 

[mysqld]
socket=/usr/local/mysql/tmp/mysql.sock
datadir=/usr/local/mysql/data
port=3306
#skip-grant-tables  #不授权模式
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
symbolic-links=0
max_connections=600
innodb_file_per_table=1
lower_case_table_names=0
character_set_server=utf8
default-storage-engine=INNODB 
pid-file=/usr/local/mysql/mysql.pid
log-error=/usr/local/mysql/tmp/error.log ##文件需要手动构建,并赋权Chmod -r 777
user=mysql

##############################主从同步配置开始#################
#设置server-id,集群中不可重复
server-id=1
max_allowed_packet=100M
log-bin = mysql-bin     #开启mysql的binlog日志功能
sync_binlog = 1         #控制数据库的binlog刷到磁盘上去 , 0 不控制,性能最好,1每次事物提交都会刷到日志文件中,性能最差,最安全
binlog_format = mixed   #binlog日志格式,mysql默认采用statement,建议使用mixed
expire_logs_days = 7                           #binlog过期清理时间
max_binlog_size = 100m                    #binlog每个日志文件大小
binlog_cache_size = 4m                        #binlog缓存大小
max_binlog_cache_size= 512m              #最大binlog缓存大
binlog-ignore-db=mysql #不生成日志文件的数据库,多个忽略数据库可以用逗号拼接,或者 复制这句话,写多行
max_allowed_packet=100M
relay-log = mysql-relay-bin
binlog-ignore-db=mysql,test,information_schema   ##不同步mysql库下的所有表
##binlog-do-db = game  ##只同步那个库
##############################主从同步配置结束#################

[mysqld_safe]

[client]
socket=/usr/local/mysql/tmp/mysql.sock

4、初始化

./mysqld --initialize --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data

初始化完成后,记住最后面的密码

5、启动服务

/usr/local/mysql/support-files/mysql.server start

6、设置登录用户

bin目录下执行

./mysql -u root -p

输入临时密码后,进入mysql命令行

##设置root密码
set password=password("123456");
或者
alter user user() identified by "123456";

##授予权限
grant all privileges on *.* to 'root'@'%' identified by '123456';

##刷新
flush privileges;


##新增用户
CREATE USER 'ambari'@'%' IDENTIFIED BY '123456';
##授予权限
grant all privileges on *.* to 'root'@'%' identified by '123456';

##刷新
flush privileges;

7、mysql开机自启动

先将/usr/local/mysql/mysql/support-files/ 文件夹下的mysql.server文件复制到 /etc/rc.d/init.d/ 目录下mysqld

命令: 
cp /usr/local/mysql/support-files/mysql.server /etc/rc.d/init.d/mysqld

赋予可执行权限:
chmod +x /etc/init.d/mysqld

添加为服务: 
chkconfig --add mysqld

查看服务列表:  
chkconfig --list

 

二、主从模式配置

主节点128配置

1、主节点128构建用于同步的用户

#设置用于同步的用户,比如A服务器为主,B服务器为从。则此用户需要在A(主)服务器上构建
CREATE USER repl_user IDENTIFIED BY '123456';
#给用户设置权限 
GRANT REPLICATION SLAVE ON *.* TO  'repl_user'@'%' identified by '123456';
FLUSH PRIVILEGES;

#查看用户权限
show grants for 'repl_user'@'%';

从节点129配置

以下操作在从节点129中进行

1、从节点129配置文件如下

[mysqld]
socket=/usr/local/mysql/tmp/mysql.sock
datadir=/usr/local/mysql/data
port=3306
#skip-grant-tables  #不授权模式
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
symbolic-links=0
max_connections=600
innodb_file_per_table=1
lower_case_table_names=0
character_set_server=utf8
default-storage-engine=INNODB 
pid-file=/usr/local/mysql/mysql.pid
log-error=/usr/local/mysql/tmp/error.log
user=mysql

##############################主从同步配置开始#################
#设置server-id,集群中不可重复
server-id=2
max_allowed_packet=100M
log-bin = mysql-bin     #开启mysql的binlog日志功能
sync_binlog = 1         #控制数据库的binlog刷到磁盘上去 , 0 不控制,性能最好,1每次事物提交都会刷到日志文件中,性能最差,最安全
binlog_format = mixed   #binlog日志格式,mysql默认采用statement,建议使用mixed
expire_logs_days = 7                           #binlog过期清理时间
max_binlog_size = 100m                    #binlog每个日志文件大小
binlog_cache_size = 4m                        #binlog缓存大小
max_binlog_cache_size= 512m              #最大binlog缓存大
binlog-ignore-db=mysql #不生成日志文件的数据库,多个忽略数据库可以用逗号拼接,或者 复制这句话,写多行
max_allowed_packet=100M
relay-log = mysql-relay-bin
binlog-ignore-db=mysql,test,information_schema   ##不同步mysql库下的所有表
##binlog-do-db = game  ##只同步那个库
##############################主从同步配置结束#################

[mysqld_safe]

[client]
socket=/usr/local/mysql/tmp/mysql.sock

配置完成后,启动从节点129服务; 

2、查看主节点128的日志名称和同步起始位置

##查看master状态,记录二进制文件名File和位置Position,后面配从库要用
show master status;

3、从节点129同步主节点128信息

mysql> CHANGE MASTER TO 
MASTER_HOST = '192.168.253.128',  
MASTER_USER = 'repl_user', 
MASTER_PASSWORD = '123456',
MASTER_PORT = 3306,
MASTER_LOG_FILE='mysql-bin.000010',
MASTER_LOG_POS=893,
MASTER_RETRY_COUNT = 60,
MASTER_HEARTBEAT_PERIOD = 10000; 

# MASTER_LOG_FILE='mysql-bin.000005',#与主库File 保持一致
# MASTER_LOG_POS=120 , #与主库Position 保持一致

 

 启动同步操作

#启动同步
start slave;
#停止同步
stop slave;

 

查看同步状态

#查看同步状态
show slave status\G


 

至此,主从模式搭建完毕。

三、双主模式

双主模式是在主从模式的基础上来完成。

双主模式,只需要将目前的主节点128同步从节点129数据即可。

1、从服务器构建用于同步的用户

#设置用于同步的用户,比如128节点从129节点同步数据,那么用户需要在129节点构建
CREATE USER repl_user IDENTIFIED BY '123456';
#给用户设置权限 
GRANT REPLICATION SLAVE ON *.* TO  'repl_user'@'%' identified by '123456';
FLUSH PRIVILEGES;

#查看用户权限
show grants for 'repl_user'@'%';

2、查看从节点129日志名称和同步起始位置

##查看master状态,记录二进制文件名File和位置Position,后面配从库要用
show master status;

 

3、主节点128同步从节点129数据

mysql> CHANGE MASTER TO 
MASTER_HOST = '192.168.253.129',  
MASTER_USER = 'repl_user', 
MASTER_PASSWORD = '123456',
MASTER_PORT = 3306,
MASTER_LOG_FILE='mysql-bin.000008',
MASTER_LOG_POS=154,
MASTER_RETRY_COUNT = 60,
MASTER_HEARTBEAT_PERIOD = 10000; 

# MASTER_LOG_FILE='mysql-bin.000005',#与主库File 保持一致
# MASTER_LOG_POS=120 , #与主库Position 保持一致

 启动同步

#启动同步
start slave;
#停止同步
stop slave;

4、查看128节点状态

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

log_bin

设置此参数表示启用binlog功能,并指定路径名称

log_bin_index

设置此参数是指定二进制索引文件的路径与名称

binlog_do_db

此参数表示只记录指定数据库的二进制日志

binlog_ignore_db
此参数表示不记录指定的数据库的二进制日志

max_binlog_cache_size

此参数表示binlog使用的内存最大的尺寸

binlog_cache_size

此参数表示binlog使用的内存大小,可以通过状态变量binlog_cache_use和binlog_cache_disk_use来帮助测试。

binlog_cache_use:使用二进制日志缓存的事务数量

binlog_cache_disk_use:使用二进制日志缓存但超过binlog_cache_size值并使用临时文件来保存事务中的语句的事务数量

max_binlog_size

Binlog最大值,最大和默认值是1GB,该设置并不能严格控制Binlog的大小,尤其是Binlog比较靠近最大值而又遇到一个比较大事务时,为了保证事务的完整性,不可能做切换日志的动作,只能将该事务的所有SQL都记录进当前日志,直到事务结束

sync_binlog

这个参数直接影响mysql的性能和完整性

sync_binlog=0

当事务提交后,Mysql仅仅是将binlog_cache中的数据写入Binlog文件,但不执行fsync之类的磁盘 同步指令通知文件系统将缓存刷新到磁盘,而让Filesystem自行决定什么时候来做同步,这个是性能最好的。

sync_binlog=n,在进行n次事务提交以后,Mysql将执行一次fsync之类的磁盘同步指令,同志文件系统将Binlog文件缓存刷新到磁盘。

Mysql中默认的设置是sync_binlog=0,即不作任何强制性的磁盘刷新指令,这时性能是最好的,但风险也是最大的。一旦系统绷Crash,在文件系统缓存中的所有Binlog信息都会丢失

 

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值