mysql如何建立大数据_mysql搭建主从结构

1.安装 mysql服务

1.卸载系统自带的相关数据库

rpm -qa | grep mysql

rpm -qa | grep mariadb

rpm -e --nodeps mariadb-libs-5.5.60-1.el7_5.x86_64

2.部署Mysql

tar -zxvf mysql-5.7.25-el7-x86_64.tar.gz -C /opt/module/

3.账号与权限

#添加账号

groupadd mysql

useradd -g mysql -s /sbin/nologin mysql

#创建data目录

mkdir /data2/mysql/data

#修改权限

chown -R mysql:mysql /data2/mysql/data

4.初始化Mysql,获取root@localhost的初始密码

cd /opt/module/mysql-5.7.25-el7-x86_64

./bin/mysqld --initialize --user=mysql --basedir=/opt/module/mysql-5.7.25-el7-x86_64 --datadir=/data2/mysql/data

#查看初始密码

cat /var/log/mysqld/mysqld.log | grep 'temporary password'

725238c5b3465f4b418e8096119d8871.png

5.配置环境变量

vim /etc/profile

#Mysql

export MYSQL_HOME=/opt/module/mysql-5.7.25-el7-x86_64

export PATH=$PATH:$MYSQL_HOME/bin

6.设置文件路径:log && pid && socket

# 日志路径

mkdir -p /var/log/mysqld

touch /var/log/mysqld/mysqld.log

chown -R mysql:mysql /var/log/mysqld/

# pid路径

mkdir -p /var/run/mysqld

chown -R mysql:mysql /var/run/mysqld/

# socker路径

mkdir -p /var/lib/mysqld

chown -R mysql:mysql /var/lib/mysqld/

ln -s /var/lib/mysqld/mysql.sock /tmp/mysql.sock

7.设置开机启动

#复制开机启动脚本到系统服务

cp /opt/module/mysql-5.7.25-el7-x86_64/support-files/mysql.server /etc/rc.d/init.d/mysqld

chown mysql:mysql /etc/rc.d/init.d/mysqld

# 修改默认的"basedir"与"datadir"

vim /etc/rc.d/init.d/mysqld

basedir=/opt/module/mysql-5.7.25-el7-x86_64

datadir=datadir=/data2/mysql/data

#添加开机启动脚本

chkconfig --add mysqld

#3:带网络的多用户,也就是所谓的纯字符模式

#5:图形界面的多用户模式

chkconfig --level 35 mysqld on

2.配置 mysql

mkdir -p /opt/module/mysql-5.7.25-el7-x86_64/etc

vim /opt/module/mysql-5.7.25-el7-x86_64/etc/my.cnf

1.配置 master

[mysqld]

server-id=2

# 启用二进制日志,存放在datadir下

log-bin=/data2/mysql/data/master-bin

log_bin_index = master-bin.index

# STATEMENT模式(SBR)每一条会修改数据的sql语句会记录到binlog中。优点是并不需要记录每一条sql语句和每一行的数据变化,减少了binlog日志量,节约IO,提高性能。缺点是在某些情况下会导致master-slave中的数据不一致(如sleep()函数, last_insert_id(),以及user-defined functions(udf)等会出现问题)

# ROW模式(RBR)不记录每条sql语句的上下文信息,仅需记录哪条数据被修改了,修改成什么样了。而且不会出现某些特定情况下的存储过程、或function、或trigger的调用和触发无法被正确复制的问题。缺点是会产生大量的日志,尤其是alter table的时候会让日志暴涨。

# MIXED模式(MBR),以上两种模式的混合使用,一般的复制使用STATEMENT模式保存binlog,对于STATEMENT模式无法复制的操作使用ROW模式保存binlog,MySQL会根据执行的SQL语句选择日志保存方式。

binlog_format=mixed #设置binlog模式,混合模式

expire_logs_days = 7 #保留7天的binlog

character-set-server=utf8

max_connections = 3000

log-error=/var/log/mysqld/mysqld.log

#记录当前MySQL进程的process id目录,启动MySQL时会去检查pid,如果存在且占用状态则会启动报错,如果存在并不占用会删除该pid,没有pid后启动MySQL会新建一个pid记录MySQL进程,主要是为了防止同一个数据库被启动多次

pid-file=/var/run/mysqld/mysqld.pid

socket=/var/lib/mysqld/mysql.sock

sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES

basedir = /opt/module/mysql-5.7.25-el7-x86_64

datadir = /data2/mysql/data

[mysql]

default-character-set=utf8

2.配置 slave

[mysqld]

server-id=137

read_only = 1

#将master的连接信息写入表:mysql.salve_master_info

master_info_repository=TABLE

#将中继日志的信息写入表:mysql.slave_realy_log_info

relay_log_info_repository=TABLE

#中继日志自我修复;当slave从库宕机后,假如relay-log损坏了,导致一部分中继日志没有处理,则自动放弃所有未执行的relay-log,并且重新从master上获取日志,这样就保证了relay-log的完整性

relay_log_recovery = on

#relay-log日志记录的是从服务器I/O线程将主服务器的二进制日志读取过来记录到从服务器本地文件

relay-log = /data2/mysql/data/slave-relay-bin

#主服务器I/O日志读取、记录及存放

relay-log-index = slave-relay-bin.index

character-set-server=utf8

max_connections = 3000

log-error=/var/log/mysqld/mysqld.log

pid-file=/var/run/mysqld/mysqld.pid

socket=/var/lib/mysqld/mysql.sock

sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES

basedir = /opt/module/mysql-5.7.25-el7-x86_64

datadir = /data2/mysql/data

[mysql]

default-character-set=utf8

3.启动 master,slave,并登陆mysql

service mysqld start

4.master创建复制用户

grant replication slave on *.* to 'slave'@'192.168.2.x' identified by '123456';

fcc38847ac6933ebca3209fdf7e4c47b.png

#查看当前数据库的二进制日志写到什么位置(只有打开二进制日志,这句命令才有结果)

show master status;

0bc23573cd362f3cb574432a949f3cc1.png

5.从服务器配置同步信息

change master to master_host='192.168.2.x',master_user='slave',master_password='xxxx',master_port=3306,master_log_file='master-bin.000002',master_log_pos=846;

6.从服务器启动复制线程

start slave;

show slave status\G

0930a5efb4086a84ae90f0577211f013.png

Slave_IO_Running: Yes 表示成功连接到master并且下载日志

Slave_SQL_Running: Yes 表示成功执行日志中的SQL语句

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值