目录
节点说明:
主节点: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信息都会丢失