#目录

#挂盘
#时间同步
#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

#配置文件

  1. cat > /etc/my.cnf << "EOF"
  2.  
  3. [client]
  4.  
  5. port =
  6.  
  7. socket = /tmp/mysql.sock
  8.  
  9. default-character-set = utf8
  10.  
  11. [mysql]
  12.  
  13. no-auto-rehash
  14.  
  15. default-character-set = utf8
  16.  
  17. [mysqld]
  18.  
  19. server-id =
  20.  
  21. port =
  22.  
  23. user = mysql
  24.  
  25. basedir = /usr/local/mysql
  26.  
  27. datadir = /data/mysqldata
  28.  
  29. socket = /tmp/mysql.sock
  30.  
  31. default-storage-engine = INNODB
  32.  
  33. character-set-server = utf8
  34.  
  35. connect_timeout =
  36.  
  37. interactive_timeout =
  38.  
  39. wait_timeout =
  40.  
  41. back_log =
  42.  
  43. event_scheduler = ON
  44.  
  45. skip_name_resolve = ON
  46.  
  47. ###########master-slave##########
  48.  
  49. log-bin = mysql-bin
  50.  
  51. binlog_format = row
  52.  
  53. max_binlog_size = 128M
  54.  
  55. binlog_cache_size = 2M
  56.  
  57. expire-logs-days =
  58.  
  59. log-slave-updates=true
  60.  
  61. gtid-mode=on
  62.  
  63. enforce-gtid-consistency=true
  64.  
  65. master_info_repository=TABLE
  66.  
  67. relay_log_info_repository=TABLE
  68.  
  69. relay_log_recovery=
  70.  
  71. sync-master-info=
  72.  
  73. slave-parallel-workers=
  74.  
  75. binlog-checksum=CRC32
  76.  
  77. master-verify-checksum=
  78.  
  79. slave-sql-verify-checksum=
  80.  
  81. binlog-rows-query-log_events=
  82.  
  83. binlog-ignore-db=mysql
  84.  
  85. binlog-ignore-db=test
  86.  
  87. binlog-ignore-db=information_schema
  88.  
  89. binlog-ignore-db=performance_schema
  90.  
  91. ###往磁盘里写入数据的频率,极大影响数据库磁盘io性能,配合iostat -dxm
  92.  
  93. innodb_flush_log_at_trx_commit =
  94.  
  95. sync_binlog=
  96.  
  97. ###该参数可以提升数据库的读的性能,一般设置为内存的80%
  98.  
  99. innodb_buffer_pool_size=6G
  100.  
  101. ###########slow_query##########
  102.  
  103. slow_query_log =
  104.  
  105. slow_query_log_file = slow.log
  106.  
  107. long_query_time =
  108.  
  109. max_connections =
  110.  
  111. max_connect_errors =
  112.  
  113. log_bin_trust_function_creators =
  114.  
  115. transaction_isolation = READ-COMMITTED
  116.  
  117. log_error = error.log
  118.  
  119. 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

#配置文件

  1. cat > /etc/my.cnf << "EOF"
  2.  
  3. [client]
  4.  
  5. port =
  6.  
  7. socket = /tmp/mysql.sock
  8.  
  9. default-character-set = utf8
  10.  
  11. [mysql]
  12.  
  13. no-auto-rehash
  14.  
  15. default-character-set = utf8
  16.  
  17. [mysqld]
  18.  
  19. server-id =
  20.  
  21. port =
  22.  
  23. basedir = /usr/local/mysql
  24.  
  25. datadir = /data/mysqldata
  26.  
  27. socket = /tmp/mysql.sock
  28.  
  29. default-storage-engine = INNODB
  30.  
  31. character-set-server = utf8
  32.  
  33. connect_timeout =
  34.  
  35. interactive_timeout =
  36.  
  37. wait_timeout =
  38.  
  39. back_log =
  40.  
  41. event_scheduler = ON
  42.  
  43. skip_name_resolve = ON
  44.  
  45. ###########master-slave##########
  46.  
  47. log-bin = mysql-bin
  48.  
  49. binlog_format = row
  50.  
  51. max_binlog_size = 128M
  52.  
  53. binlog_cache_size = 2M
  54.  
  55. expire-logs-days =
  56.  
  57. log-slave-updates=true
  58.  
  59. gtid-mode=on
  60.  
  61. enforce-gtid-consistency=true
  62.  
  63. master_info_repository=TABLE
  64.  
  65. relay_log_info_repository=TABLE
  66.  
  67. relay_log_recovery=
  68.  
  69. sync-master-info=
  70.  
  71. slave-parallel-workers=
  72.  
  73. binlog-checksum=CRC32
  74.  
  75. master-verify-checksum=
  76.  
  77. slave-sql-verify-checksum=
  78.  
  79. binlog-rows-query-log_events=
  80.  
  81. binlog-ignore-db=mysql
  82.  
  83. binlog-ignore-db=test
  84.  
  85. binlog-ignore-db=information_schema
  86.  
  87. binlog-ignore-db=performance_schema
  88.  
  89. ###往磁盘里写入数据的频率,极大影响从库磁盘io性能
  90.  
  91. innodb_flush_log_at_trx_commit =
  92.  
  93. sync_binlog=
  94.  
  95. innodb_buffer_pool_size=6G
  96.  
  97. slave_exec_mode=IDEMPOTENT
  98.  
  99. #该配置能够实现一台主机上的多个数据库到从库的多对一复制
  100.  
  101. #replicate-rewrite-db = user -> com
  102.  
  103. #replicate-rewrite-db = trader -> com
  104.  
  105. #replicate-rewrite-db = pay -> com
  106.  
  107. ###########slow_query##########
  108.  
  109. slow_query_log =
  110.  
  111. slow_query_log_file = slow.log
  112.  
  113. long_query_time =
  114.  
  115. max_connections =
  116.  
  117. max_connect_errors =
  118.  
  119. log_bin_trust_function_creators =
  120.  
  121. transaction_isolation = READ-COMMITTED
  122.  
  123. log_error = error.log
  124.  
  125. 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. BigInteger&BigDecimal类

    BigInteger类 当需要处理超过 long 数值范围的大整数时,java.math 包中的 BigInteger 类提供任意精度的整数运算. 构造方式 //构造方法,将BigInteger的十进 ...

  2. SpringBoot入门(一)

    1 简介 Spring Boot是快速搭建Spring工程的脚手架,简化配置与依赖关系(约定大于配置),让我们把精力集中在业务部分 2 简单入门事例 创建一个Hello World的Web工程 2.1 ...

  3. cogs 1583. [POJ 3237] 树的维护 树链剖分套线段树

    1583. [POJ 3237] 树的维护 ★★★★   输入文件:maintaintree.in   输出文件:maintaintree.out   简单对比时间限制:5 s   内存限制:128 ...

  4. 测试必备之Java知识(三)—— 集合、Map相关

    集合相关 List.Set.Map的区别 类型 描述 List 允许重复对象,可插入多个null元素,有序 Set 不允许重复对象,只允许一个null元素,无序 Map 不是collection的子接 ...

  5. ORM跨表查询总结

    一.基于对象的查询-->子查询 1.一对多 正向查询:基于 字段 反向查询:基于 表名__set.all() 注意:表名全部小写 2.多对多 正向查询:基于 字段.all() 反向查询:基于 表 ...

  6. Manipulating Data from Oracle Object Storage to ADW with Oracle Data Integrator (ODI)

    0. Introduction and Prerequisites This article presents an overview on how to use Oracle Data Integr ...

  7. CTF-Keylead(ASIS CTF 2015)

    将keylead下载到本地用7-ZIP打开,发现主要文件 keylead~ 在ubuntu里跑起来,发现是个游戏,按回车后要摇出3,1,3,3,7就能获得flag. 拖进IDA 直接开启远程调试,跑起 ...

  8. Docker windows nano server容器中安装ssh实现远程登录管理

    [问题] 使用ServiceMonitor.exe作为前台进程运行起来的容器无法attach. 无法远程连接到运行中的容器中进行管理. [解决方法] 在container中新建管理员用户,通过SSH实 ...

  9. Collections.synchronizedList 、CopyOnWriteArrayList、Vector介绍、源码浅析与性能对比

    ## ArrayList线程安全问题 众所周知,`ArrayList`不是线程安全的,在并发场景使用`ArrayList`可能会导致add内容为null,迭代时并发修改list内容抛`Concurre ...

  10. Java容器解析系列(16) android内存优化之SparseArray

    HashMap的缺点: 自动装箱导致的性能损失; 使用拉链法来解决hash冲突,如果hash冲突较多,需要遍历链表,导致性能下降,在Java 8 中,如果链表长度>8,会使用红黑树来代替链表; ...