系统内存不足导致OOM 错杀MySQL进程

MySQLA128_huanggr 回复了问题 • 4 人关注 • 4 个回复 • 200 次浏览 • 2017-02-15 15:26 • 来自相关话题

有关数据类型与其占用空间计算方式

MySQLwubx 回复了问题 • 2 人关注 • 3 个回复 • 120 次浏览 • 2017-02-10 23:28 • 来自相关话题

MySQL大量进程处于Killed状态。

MySQLwubx 回复了问题 • 5 人关注 • 4 个回复 • 190 次浏览 • 2017-02-10 23:27 • 来自相关话题

怎么给机器命名比较好

回复

Linuxwubx 回复了问题 • 1 人关注 • 2 个回复 • 160 次浏览 • 2017-02-10 23:22 • 来自相关话题

tokudb

MySQLyangjustins 回复了问题 • 2 人关注 • 3 个回复 • 104 次浏览 • 2017-01-19 14:11 • 来自相关话题

有找到没用的历史数据进行清理吗

回复

MySQLwjxiaoit 发起了问题 • 1 人关注 • 0 个回复 • 91 次浏览 • 2017-01-16 09:14 • 来自相关话题

有找到没用的历史数据进行清理吗

回复

MySQLwjxiaoit 发起了问题 • 1 人关注 • 0 个回复 • 68 次浏览 • 2017-01-16 09:14 • 来自相关话题

知数堂公开课第30期分享-知数堂第30次公开课: 分享MySQL数据库中MVCC的实现方式

MySQLwubx 发表了文章 • 0 个评论 • 83 次浏览 • 2017-01-12 10:21 • 来自相关话题

知数堂第30次公开课: 
      分享MySQL数据库中MVCC的实现方式,以及Undo,Redo Log的工作机制,MySQL中Sharp、Fuzzy两种CheckPoint实现方式。

报名地址:  http://www.itdks.com/dakashuo/playback/273 查看全部
知数堂第30次公开课: 
      分享MySQL数据库中MVCC的实现方式,以及Undo,Redo Log的工作机制,MySQL中Sharp、Fuzzy两种CheckPoint实现方式。

报名地址:  http://www.itdks.com/dakashuo/playback/273

check_gtid_sync.py用于检查从库接收的GTID是否执行完成

MySQLkeung 发表了文章 • 0 个评论 • 78 次浏览 • 2017-01-10 01:07 • 来自相关话题

check_gtid_sync.py参考用法
python check_gtid_sync.py --host="172.16.60.60“ --port=3306 --user="monitor" --password="monitor4lepus"

脚本内容如下#!/usr/bin/env python
#coding: utf-8

import re
import sys
import argparse
import pymysql.cursors

parser = argparse.ArgumentParser()

class CheckMySQL(object):
def __init__(self, host=None, port=None, user=None, passwd=None):
self.dbhost = host
self.dbport = port
self.dbuser = user
self.dbpassword = passwd

def connect(self):
try:
conn = pymysql.connect(self.dbhost, self.dbuser, self.dbpassword, port=self.dbport, charset='utf8')
cursor = conn.cursor(cursor=pymysql.cursors.DictCursor)
conn.commit()
except Exception, e:
print(e)
return 1
return cursor

def isGTID_sync(self):
try:
with self.connect() as cursor:
cursor.execute("show slave status")
result = cursor.fetchone()
cursor.close()
retd_gtid = int(result.get("Retrieved_Gtid_Set").split("-")[-1])
exec_gtid = int(result.get("Executed_Gtid_Set").split("-")[-1])
if retd_gtid == exec_gtid:
result = "OK"
elif retd_gtid > exec_gtid:
result = "Gtid_Set_Behind_Master: %s" % (retd_gtid - exec_gtid)
except Exception, e:
print(e)
return "ERROR"
return result


if __name__== "__main__":
parser.add_argument("--host", type=str, help="mysql server host")
parser.add_argument("--port", type=int, help="mysql server port")
parser.add_argument("--user", type=str, help="mysql server user")
parser.add_argument("--password", type=str, help="mysql server passwd")
args = parser.parse_args()
if not args.host or not args.port or not args.user or not args.password:
print parser.format_usage()
sys.exit(1)

host=args.host
port=args.port
user=args.user
passwd=args.password
check=CheckMySQL(host,port,user,passwd)
isSync = check.isGTID_sync()
print isSync 查看全部
check_gtid_sync.py参考用法
python check_gtid_sync.py --host="172.16.60.60“ --port=3306 --user="monitor" --password="monitor4lepus"

脚本内容如下
#!/usr/bin/env python
#coding: utf-8

import re
import sys
import argparse
import pymysql.cursors

parser = argparse.ArgumentParser()

class CheckMySQL(object):
def __init__(self, host=None, port=None, user=None, passwd=None):
self.dbhost = host
self.dbport = port
self.dbuser = user
self.dbpassword = passwd

def connect(self):
try:
conn = pymysql.connect(self.dbhost, self.dbuser, self.dbpassword, port=self.dbport, charset='utf8')
cursor = conn.cursor(cursor=pymysql.cursors.DictCursor)
conn.commit()
except Exception, e:
print(e)
return 1
return cursor

def isGTID_sync(self):
try:
with self.connect() as cursor:
cursor.execute("show slave status")
result = cursor.fetchone()
cursor.close()
retd_gtid = int(result.get("Retrieved_Gtid_Set").split("-")[-1])
exec_gtid = int(result.get("Executed_Gtid_Set").split("-")[-1])
if retd_gtid == exec_gtid:
result = "OK"
elif retd_gtid > exec_gtid:
result = "Gtid_Set_Behind_Master: %s" % (retd_gtid - exec_gtid)
except Exception, e:
print(e)
return "ERROR"
return result


if __name__== "__main__":
parser.add_argument("--host", type=str, help="mysql server host")
parser.add_argument("--port", type=int, help="mysql server port")
parser.add_argument("--user", type=str, help="mysql server user")
parser.add_argument("--password", type=str, help="mysql server passwd")
args = parser.parse_args()
if not args.host or not args.port or not args.user or not args.password:
print parser.format_usage()
sys.exit(1)

host=args.host
port=args.port
user=args.user
passwd=args.password
check=CheckMySQL(host,port,user,passwd)
isSync = check.isGTID_sync()
print isSync

tokudb于percona-server5.7.16 源码编译安装

MySQLyangjustins 发表了文章 • 0 个评论 • 82 次浏览 • 2017-01-05 16:08 • 来自相关话题

看到有人发tokudb的安装过程,我也写一篇自己源码编译的过程.因为是之前写的简要步骤,所以就没有安装过程的实例展示了.....
ps:至于为什么非要用源码编译,是因为,之前线上用的是源码编译的,然后现在要扩展tokudb,所以就研究了下,有兴趣可以一起探讨.
 
 

tokudb是percona出的一个引擎.跟大多数引擎一样.安装采用插件式安装即可;

1.安装前准备:
1.1需要关闭Transparent huge pages:
echo never > /sys/kernel/mm/transparent_hugepage/enabled
echo never > /sys/kernel/mm/transparent_hugepage/defrag

1.2修改selinux:
# vi /etc/selinux/config 
若要临时生效,可以执行:# setenforce 0


2.下载最新的percona server源码包和相同版本的二进制包;

3.安装mysql过程:
3.1安装依赖包:
yum install gcc gcc-c++ ncurses readline-devel ncurses-devel bison bison-devel vim vim-enhanced readline readline-devel libaio libaio-devel make cmake libtermcap libtermcap-devel imake autoconf automake libtool m4 libstdc++-devel zlib-devel readline-devel glibc -y

这是之前传统的源码依赖包,如果需要使用tokudb 还需要安装jemalloc  valgrind valgrind-devel

yum install gcc gcc-c++ ncurses readline-devel ncurses-devel bison bison-devel vim vim-enhanced readline readline-devel libaio libaio-devel make cmake libtermcap libtermcap-devel imake autoconf automake libtool m4 libstdc++-devel zlib-devel readline-devel glibc jemalloc  valgrind valgrind-devel -y


3.2
编译:
 cmake -DCMAKE_INSTALL_PREFIX=/home/mysql3313/ -DMYSQL_DATADIR=/home/mysql3313/data -DSYSCONFDIR=/home/mysql3313 -DWITH_INNOBASE_STORAGE_ENGINE=1 -DWITH_ARCHIVE_STORAGE_ENGINE=1 -DWITH_BLACKHOLE_STORAGE_ENGINE=1 -DWITH_FEDERATED_STORAGE_ENGINE=1 -DWITH_PARTITION_STORAGE_ENGINE=1  -DMYSQL_UNIX_ADDR=/home/mysql3313/mysql.sock -DMYSQL_TCP_PORT=3313 -DENABLED_LOCAL_INFILE=1  -DENABLE_DOWNLOADS=1  -DCOMPILATION_COMMENT="Percona Server"  -DOPTIMIZER_TRACE=1   -DWITH_ZLIB=system  -DWITH_VALGRIND=1  -DCMAKE_C_FLAGS=-DHAVE_purify  -DCMAKE_CXX_FLAGS=-DHAVE_purify -DWITH_PARTITION_STORAGE_ENGINE=1    -DZLIB_INCLUDE_DIR=/usr/lib64 -DEXTRA_CHARSETS=all -DDEFAULT_CHARSET=utf8  -DDEFAULT_COLLATION=utf8_general_ci  -DMYSQL_USER=mysql  -DWITH_BOOST=/usr/local/boost


make
make install

3.3 初始化:
bin/mysqld --defaults-file=/home/mysql3313/my.cnf  --initialize --user=mysql 

3.4 启动:
support-files/mysql.server start

3.5 修改root密码
alter USER root@'localhost'  IDENTIFIED BY 'new_password'

4.安装tokudb
安装tokudb插件之前,需要copy插件包,(因为在源码包的编译方式中没有编译tokudb的插件包);
从官方网站下载相同版本的二进制包,将解压后的二进制包里面  lib/mysql/目录下(libjemalloc.so  libjemalloc.so.1)两个文件copy到相同目录(/home/mysql3313/lib/mysql/)
                                                         lib/mysql/plugin/ha_tokudb.so 文件copy到相同目录(/home/mysql3313/lib/mysql/plugin/)
然后记得给刚copy的几个文件更改用户
chown mysql:mysql -R /home/mysql3313/lib/mysql*


安装tokudb插件:
INSTALL PLUGIN TokuDB SONAME 'ha_tokudb.so';
INSTALL PLUGIN TokuDB_file_map SONAME 'ha_tokudb.so';
INSTALL PLUGIN TokuDB_fractal_tree_info SONAME 'ha_tokudb.so';
INSTALL PLUGIN TokuDB_fractal_tree_block_map SONAME 'ha_tokudb.so';
INSTALL PLUGIN TokuDB_trx SONAME 'ha_tokudb.so';
INSTALL PLUGIN TokuDB_locks SONAME 'ha_tokudb.so';
INSTALL PLUGIN TokuDB_lock_waits SONAME 'ha_tokudb.so';
INSTALL PLUGIN TokuDB_background_job_status SONAME 'ha_tokudb.so';

检查:
show engines;
show plugins;


tokudb是引擎插件,跟其他插件方式不一样.只需要安装一次就行了.重启后依然有效. 查看全部
看到有人发tokudb的安装过程,我也写一篇自己源码编译的过程.因为是之前写的简要步骤,所以就没有安装过程的实例展示了.....
ps:至于为什么非要用源码编译,是因为,之前线上用的是源码编译的,然后现在要扩展tokudb,所以就研究了下,有兴趣可以一起探讨.
 
 

tokudb是percona出的一个引擎.跟大多数引擎一样.安装采用插件式安装即可;

1.安装前准备:
1.1需要关闭Transparent huge pages:
echo never > /sys/kernel/mm/transparent_hugepage/enabled
echo never > /sys/kernel/mm/transparent_hugepage/defrag

1.2修改selinux:
# vi /etc/selinux/config 
若要临时生效,可以执行:# setenforce 0


2.下载最新的percona server源码包和相同版本的二进制包;

3.安装mysql过程:
3.1安装依赖包:
yum install gcc gcc-c++ ncurses readline-devel ncurses-devel bison bison-devel vim vim-enhanced readline readline-devel libaio libaio-devel make cmake libtermcap libtermcap-devel imake autoconf automake libtool m4 libstdc++-devel zlib-devel readline-devel glibc -y

这是之前传统的源码依赖包,如果需要使用tokudb 还需要安装jemalloc  valgrind valgrind-devel

yum install gcc gcc-c++ ncurses readline-devel ncurses-devel bison bison-devel vim vim-enhanced readline readline-devel libaio libaio-devel make cmake libtermcap libtermcap-devel imake autoconf automake libtool m4 libstdc++-devel zlib-devel readline-devel glibc jemalloc  valgrind valgrind-devel -y


3.2
编译:
 cmake -DCMAKE_INSTALL_PREFIX=/home/mysql3313/ -DMYSQL_DATADIR=/home/mysql3313/data -DSYSCONFDIR=/home/mysql3313 -DWITH_INNOBASE_STORAGE_ENGINE=1 -DWITH_ARCHIVE_STORAGE_ENGINE=1 -DWITH_BLACKHOLE_STORAGE_ENGINE=1 -DWITH_FEDERATED_STORAGE_ENGINE=1 -DWITH_PARTITION_STORAGE_ENGINE=1  -DMYSQL_UNIX_ADDR=/home/mysql3313/mysql.sock -DMYSQL_TCP_PORT=3313 -DENABLED_LOCAL_INFILE=1  -DENABLE_DOWNLOADS=1  -DCOMPILATION_COMMENT="Percona Server"  -DOPTIMIZER_TRACE=1   -DWITH_ZLIB=system  -DWITH_VALGRIND=1  -DCMAKE_C_FLAGS=-DHAVE_purify  -DCMAKE_CXX_FLAGS=-DHAVE_purify -DWITH_PARTITION_STORAGE_ENGINE=1    -DZLIB_INCLUDE_DIR=/usr/lib64 -DEXTRA_CHARSETS=all -DDEFAULT_CHARSET=utf8  -DDEFAULT_COLLATION=utf8_general_ci  -DMYSQL_USER=mysql  -DWITH_BOOST=/usr/local/boost


make
make install

3.3 初始化:
bin/mysqld --defaults-file=/home/mysql3313/my.cnf  --initialize --user=mysql 

3.4 启动:
support-files/mysql.server start

3.5 修改root密码
alter USER root@'localhost'  IDENTIFIED BY 'new_password'

4.安装tokudb
安装tokudb插件之前,需要copy插件包,(因为在源码包的编译方式中没有编译tokudb的插件包);
从官方网站下载相同版本的二进制包,将解压后的二进制包里面  lib/mysql/目录下(libjemalloc.so  libjemalloc.so.1)两个文件copy到相同目录(/home/mysql3313/lib/mysql/)
                                                         lib/mysql/plugin/ha_tokudb.so 文件copy到相同目录(/home/mysql3313/lib/mysql/plugin/)
然后记得给刚copy的几个文件更改用户
chown mysql:mysql -R /home/mysql3313/lib/mysql*


安装tokudb插件:
INSTALL PLUGIN TokuDB SONAME 'ha_tokudb.so';
INSTALL PLUGIN TokuDB_file_map SONAME 'ha_tokudb.so';
INSTALL PLUGIN TokuDB_fractal_tree_info SONAME 'ha_tokudb.so';
INSTALL PLUGIN TokuDB_fractal_tree_block_map SONAME 'ha_tokudb.so';
INSTALL PLUGIN TokuDB_trx SONAME 'ha_tokudb.so';
INSTALL PLUGIN TokuDB_locks SONAME 'ha_tokudb.so';
INSTALL PLUGIN TokuDB_lock_waits SONAME 'ha_tokudb.so';
INSTALL PLUGIN TokuDB_background_job_status SONAME 'ha_tokudb.so';

检查:
show engines;
show plugins;


tokudb是引擎插件,跟其他插件方式不一样.只需要安装一次就行了.重启后依然有效.