#目录

#挂盘
#时间同步
#master节点,进行如下操作:
  #下载安装 #初始化 #配置文件 #开机启动 #服务启动 #初始数据库
#slave节点,进行如下操作:
  #下载安装 #初始化 #配置文件 #开机启动 #服务启动 #初始化数据库
#主从开启
  #master上分配从库复制的账户密码 #slave上开启主从复制 #master上创建数据库 #slave上查看是否同步数据库 #开机启动
#测试
  #master上创建表 #slave上查看数据
#磁盘性能优化

#简介

原本是一个开放源代码关系数据库管理系统,原开发者为瑞典MySQL AB公司,该公司于2008年被昇阳微系统(Sun Microsystems)收购。2009年,甲骨文公司(Oracle)收购昇阳微系统公司,MySQL成为Oracle旗下产品。

MySQL在过去由于性能高、成本低、可靠性好,已经成为最流行的开源数据库,因此被广泛地应用在Internet上的中小型网站中。随着MySQL的不断成熟,它也逐渐用于更多大规模网站和应用,比如维基百科GoogleFacebook等网站。非常流行的开源软件组合LAMP中的“M”指的就是MySQL。

本文简要介绍mysql的主从复制和io优化的相关内容,mysql的主从复制主要应用在数据库的备份和读写分离上,备份即是通过从库来实现,读写分离主要是来实现性能优化和负载分担。其中磁盘性能优化是在数据库运维中踩的一个坑,当时测试环境机器人跑起来,主库读写上涨,从库延迟 show slave status查看Seconds_Behind_Master值逐渐增加,远远落后于主库,从库表现为磁盘io过大,将近2000 iops,解决方案为配置文件添加两个参数,使得io降至100-200iops左右,主从同步正常。

#挂盘

fdisk -l

mkfs.ext4 -j /dev/sdc

echo "/dev/sdc        /data/mysqldata         ext4    defaults        0 0" >> /etc/fstab

mount -a

mount

#时间同步

yes|cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime

hwclock -w

#master节点,进行如下操作:

#下载安装

yum -y install autoconf wget

mkdir -pv /data/soft

wget -P /data/soft/ http://mirrors.sohu.com/mysql/MySQL-5.7/mysql-5.7.18-linux-glibc2.5-x86_64.tar.gz

cd /data/soft

tar -xf mysql-5.7.18-linux-glibc2.5-x86_64.tar.gz -C /usr/local/

cd /usr/local/

ln -sv mysql-5.7.18-linux-glibc2.5-x86_64 mysql

useradd -M -s /sbin/nologin mysql

cat /etc/passwd |grep mysql

cat /etc/group |grep mysql

mkdir -p /data/mysqldata

chown -R mysql:mysql /data/mysqldata

cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld

sed -i 's#^basedir=$#basedir=/usr/local/mysql#' /etc/init.d/mysqld

sed -i 's#^datadir=$#datadir=/data/mysqldata#'  /etc/init.d/mysqld

chmod +x /etc/init.d/mysqld

#初始化

cd /usr/local/mysql/bin/

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

#配置文件

 cat > /etc/my.cnf << "EOF"

 [client]

 port = 

 socket = /tmp/mysql.sock

 default-character-set = utf8

 [mysql]

 no-auto-rehash

 default-character-set = utf8

 [mysqld]

 server-id = 

 port = 

 user = mysql

 basedir = /usr/local/mysql

 datadir = /data/mysqldata

 socket = /tmp/mysql.sock

 default-storage-engine = INNODB

 character-set-server = utf8

 connect_timeout = 

 interactive_timeout = 

 wait_timeout = 

 back_log = 

 event_scheduler = ON

 skip_name_resolve = ON

 ###########master-slave##########

 log-bin = mysql-bin

 binlog_format = row

 max_binlog_size = 128M

 binlog_cache_size = 2M

 expire-logs-days = 

 log-slave-updates=true

 gtid-mode=on

 enforce-gtid-consistency=true

 master_info_repository=TABLE

 relay_log_info_repository=TABLE

 relay_log_recovery=

 sync-master-info=

 slave-parallel-workers=

 binlog-checksum=CRC32

 master-verify-checksum=

 slave-sql-verify-checksum=

 binlog-rows-query-log_events=

 binlog-ignore-db=mysql

 binlog-ignore-db=test

 binlog-ignore-db=information_schema

 binlog-ignore-db=performance_schema

 ###往磁盘里写入数据的频率,极大影响数据库磁盘io性能,配合iostat -dxm 

 innodb_flush_log_at_trx_commit = 

 sync_binlog=

 ###该参数可以提升数据库的读的性能,一般设置为内存的80%

 innodb_buffer_pool_size=6G

 ###########slow_query##########

 slow_query_log = 

 slow_query_log_file = slow.log

 long_query_time = 

 max_connections = 

 max_connect_errors = 

 log_bin_trust_function_creators = 

 transaction_isolation = READ-COMMITTED

 log_error = error.log

 EOF

my.cnf

#开机启动

cat >> /etc/profile << "EOF"

export PATH=$PATH:/usr/local/mysql/bin

EOF

source /etc/profile

#服务启动

/etc/init.d/mysqld start

#服务启动

mysql -uroot

use mysql;

update user set authentication_string=password('123456') where user='root';

flush privileges;

\q

#slave节点,进行如下操作:

#slave节点,进行如下操作:

yum -y install autoconf wget

wget -P /data/soft/ http://mirrors.sohu.com/mysql/MySQL-5.7/mysql-5.7.18-linux-glibc2.5-x86_64.tar.gz

cd /data/soft

tar -xf mysql-5.7.18-linux-glibc2.5-x86_64.tar.gz -C /usr/local/

cd /usr/local/

ln -sv mysql-5.7.18-linux-glibc2.5-x86_64 mysql

useradd -M -s /sbin/nologin mysql

cat /etc/passwd |grep mysql

cat /etc/group |grep mysql

mkdir -p /data/mysqldata

chown -R mysql:mysql /data/mysqldata

cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld

sed -i 's#^basedir=$#basedir=/usr/local/mysql#' /etc/init.d/mysqld

sed -i 's#^datadir=$#datadir=/data/mysqldata#'  /etc/init.d/mysqld

chmod +x /etc/init.d/mysqld

#初始化

cd /usr/local/mysql/bin/

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

#配置文件

 cat > /etc/my.cnf << "EOF"

 [client]

 port = 

 socket = /tmp/mysql.sock

 default-character-set = utf8

 [mysql]

 no-auto-rehash

 default-character-set = utf8

 [mysqld]

 server-id = 

 port = 

 basedir = /usr/local/mysql

 datadir = /data/mysqldata

 socket = /tmp/mysql.sock

 default-storage-engine = INNODB

 character-set-server = utf8

 connect_timeout = 

 interactive_timeout = 

 wait_timeout = 

 back_log = 

 event_scheduler = ON

 skip_name_resolve = ON

 ###########master-slave##########

 log-bin = mysql-bin

 binlog_format = row

 max_binlog_size = 128M

 binlog_cache_size = 2M

 expire-logs-days = 

 log-slave-updates=true

 gtid-mode=on

 enforce-gtid-consistency=true

 master_info_repository=TABLE

 relay_log_info_repository=TABLE

 relay_log_recovery=

 sync-master-info=

 slave-parallel-workers=

 binlog-checksum=CRC32

 master-verify-checksum=

 slave-sql-verify-checksum=

 binlog-rows-query-log_events=

 binlog-ignore-db=mysql

 binlog-ignore-db=test

 binlog-ignore-db=information_schema

 binlog-ignore-db=performance_schema

 ###往磁盘里写入数据的频率,极大影响从库磁盘io性能

 innodb_flush_log_at_trx_commit = 

 sync_binlog=

 innodb_buffer_pool_size=6G

 slave_exec_mode=IDEMPOTENT

 #该配置能够实现一台主机上的多个数据库到从库的多对一复制

 #replicate-rewrite-db = user -> com

 #replicate-rewrite-db = trader -> com

 #replicate-rewrite-db = pay -> com

 ###########slow_query##########

 slow_query_log = 

 slow_query_log_file = slow.log

 long_query_time = 

 max_connections = 

 max_connect_errors = 

 log_bin_trust_function_creators = 

 transaction_isolation = READ-COMMITTED

 log_error = error.log

 EOF

my.cnf

#开机启动

cat >> /etc/profile << "EOF"

export PATH=$PATH:/usr/local/mysql/bin

EOF

source /etc/profile

#服务启动

/etc/init.d/mysqld start

echo "/etc/init.d/mysqld start" >> /etc/rc.d/rc.local

#初始化数据库

mysql -uroot

use mysql;

update user set authentication_string=password('123456') where user='root';flush privileges;

flush privileges;

\q

#主从开启

#master上分配从库复制的账户密码

mysql -uroot -p'123456' -e "grant replication slave on *.* to 'slave'@'%' identified by 'slave123456';"

mysql -uroot -p'123456' -e "use mysql; select user,repl_slave_priv from user where user='slave';"

#slave上开启主从复制

mysql -uroot -p'123456' -e "change master to master_host='10.0.0.4',master_user='slave',master_password='slave123456',master_connect_retry=1;"

mysql -uroot -p'123456' -e "start slave;"

mysql -uroot -p'123456' -e "show slave status\G;"

#master上创建数据库

mysql -uroot -p'123456' -e "create database trader default character set utf8 collate utf8_bin;grant all on trader.* to 'com'@'%' identified by '654321';"

mysql -uroot -p'123456' -e "create database pay default character set utf8 collate utf8_bin;grant all on pay.* to 'com'@'%' identified by '654321';"

mysql -uroot -p'123456' -e "create database user default character set utf8 collate utf8_bin;grant all on user.* to 'com'@'%' identified by '654321';"

#slave上查看是否同步数据库

mysql -uroot -p'123456' -e "show slave status\G;"

mysql -uroot -p'123456' -e "show databases;"

#开机启动

/etc/init.d/mysqld start

echo "/etc/init.d/mysqld start" >> /etc/rc.d/rc.local

chmod +x /etc/rc.d/rc.local

#测试

#master上创建表

mysql -uroot -p'123456' -e "use pay; create table pay (id int unsigned not null auto_increment, name char(20) not null, age tinyint not null, primary key(id), unique key(name), index(age)); insert into pay(name,age)  values ('user1',20); select * from pay;"

mysql -uroot -p'123456' -e "use trader; create table trader (id int unsigned not null auto_increment, name char(20) not null, age tinyint not null, primary key(id), unique key(name), index(age)); insert into trader(name,age)  values ('user1',20); select * from trader;"

mysql -uroot -p'123456' -e "use user; create table user (id int unsigned not null auto_increment, name char(20) not null, age tinyint not null, primary key(id), unique key(name), index(age)); insert into user(name,age)  values ('user1',20); select * from user;"

#slave上查看数据

mysql -uroot -p'123456' -e "show databases; use com; show tables;";

#磁盘性能优化

###往磁盘里写入数据的频率,极大影响数据库磁盘io性能,配合iostat -dxm 1

innodb_flush_log_at_trx_commit = 2

sync_binlog=100

Mysql 5.7.18:主从复制,io优化的更多相关文章

  1. SSD 下的 MySQL(5.5) IO 优化

    一 目录 一 目录 二 背景 三 SSD 特性 四 基于 SSD 的数据库优化 五 A 项目 MySQL 主从关系图 六 程序切换之前调优 6.1 修改系统 IO 调度算法 6.2 修改 innodb ...

  2. MySQL 5.7.18 主从复制 Error1205

    从库报 error 1205 1.mysql报错信息 [root@slave2(35.102) ~]# mysql -uroot -p Enter password: Welcome to the M ...

  3. MySQL基础之第18章 性能优化

    18.1.优化简介 SHOW STATUS LIKE ‘value’;connections                 连接数uptime                          启动 ...

  4. MySQL 5.7.18的安装及主从复制(主从同步)

    MySQL 5.7.18的安装与主从复制 IP 计算机名 角色 192.168.1.222 001 master 192.168.1.233 002 slave CentOS 6.9安装mysql5. ...

  5. Mysql实现企业级数据库主从复制架构实战

    场景 公司规模已经形成,用户数据已成为公司的核心命脉,一次老王一不小心把数据库文件删除,通过mysqldump备份策略恢复用了两个小时,在这两小时中,公司业务中断,损失100万,老王做出深刻反省,公司 ...

  6. 项目实战7—Mysql实现企业级数据库主从复制架构实战

    Mysql实现企业级数据库主从复制架构实战 环境背景:公司规模已经形成,用户数据已成为公司的核心命脉,一次老王一不小心把数据库文件删除,通过mysqldump备份策略恢复用了两个小时,在这两小时中,公 ...

  7. 重新学习MySQL数据库5:根据MySQL索引原理进行分析与优化

    重新学习MySQL数据库5:根据MySQL索引原理进行分析与优化 一:Mysql原理与慢查询 MySQL凭借着出色的性能.低廉的成本.丰富的资源,已经成为绝大多数互联网公司的首选关系型数据库.虽然性能 ...

  8. MySql(八):MySQL性能调优——Query 的优化

    一.理解MySQL的Query Optimizer MySQL Optimizer是一个专门负责优化SELECT 语句的优化器模块,它主要的功能就是通过计算分析系统中收集的各种统计信息,为客户端请求的 ...

  9. Mysql数据库调优和性能优化

    1. 简介 在Web应用程序体系架构中,数据持久层(通常是一个关系数据库)是关键的核心部分,它对系统的性能有非常重要的影响.MySQL是目前使用最多的开源数据库,但是mysql数据库的默认设置性能非常 ...

随机推荐

  1. 31.用python中的serial向串口发送和接收数据(案例一)

    代码功能说明:1.向串口助手发送十六进制数据:0X01,0X03,0X00,0X00,0X00,0X01,0X84,0X0A: 2.用串口助手向代码发送数据,并将发送过来的数据保存在数据库中,按数据和 ...

  2. SpringCloud入门系列0-Nacos的安装与配置

    背景 工作有一些年头了,自从19年初彻底转了java(这又是另一篇心酸的故事),突然感觉自己荒废了好几年(不是说.net不好,而是回顾自己这几年做的很多东西都浮于表面,有时候弄成很忙的样子,回头看看自 ...

  3. 量化投资学习笔记07——python知识补漏

    看<量化投资:以python为工具>这本书,第一部分是python的基础知识.这一部分略读了,只看我还不知道或不熟的. 定义复数 x = complex(2, 5) #2+5j 也可以直接 ...

  4. JavaScript substring()

    JavaScript substring() 方法 参数 描述 start 必需.一个非负的整数,规定要提取的子串的第一个字符在 stringObject 中的位置. stop 可选.一个非负的整数, ...

  5. jdk1.7扩容时,不论是否有链表,并发都可能出现循环链表

    扩容时使用transfertransfer不同于put时的判断hash冲突,直接使用头插法,如果没有冲突,则next为null.如下:e.next = newTable[i];newTable[i] ...

  6. 原生js实现音乐列表(隔行换色、全选)

    一.实现原理: 1.使用 % 运算符实现各行换色,规律:当%前面的值和后面的值相同时  结果为0: 2.使用开关思想,实现在同一个元素上反复点击时的条件判断,并且把开关以属性方式绑定在每个元素上: 3 ...

  7. Neo4j集群容器化部署

    集群基本配置(示例) core servers: 10.110.10.11, 10.110.10.12, 10.110.10.13read replicas: 10.110.10.14, 10.110 ...

  8. P1551 亲戚 并查集

    P1551 亲戚 题目背景 若某个家族人员过于庞大,要判断两个是否是亲戚,确实还很不容易,现在给出某个亲戚关系图,求任意给出的两个人是否具有亲戚关系. 题目描述 规定:x和y是亲戚,y和z是亲戚,那么 ...

  9. 《深入浅出话数据结构》系列之什么是B树、B+树?为什么二叉查找树不行?

    本文将为大家介绍B树和B+树,首先介绍了B树的应用场景,为什么需要B树:然后介绍了B树的查询和插入过程:最后谈了B+树针对B树的改进. 在谈B树之前,先说一下B树所针对的应用场景.那么B树是用来做什么 ...

  10. scrapy框架安装及创建

    介绍:大而全的爬虫组件 使用Anaconda conda install -c conda-forge scrapy 一.安装: windows 1.下载 https://www.lfd.uci.ed ...