Mysql数据库安装及生产环境下主从库同步配置
目录
1安装M YSQL数据库......................................................................................................................................
2生产环境下M Y SQL数据库主从同步配置.................................................................................................
2.1 主数据库配置 (5)
2.2 从数据库配置 (5)
3监控服务器...............................................................................................................................................
3.1 监控主数据库服务器 (6)
3.2 监控从数据库服务器 (6)
1安装Mysql数据库
安装环境:
系统:CentOS-6.6-x86_64
数据库:MySQL-server-5.5.42-1.el6.x86_64;MySQL-client-5.5.42-1.el6.x86_64
1.SSH方式登录到MySQL服务器
2.创建存放安装文件的目录
[root@localhost /]# mkdir -p /sw/mysql55
3.上传安装文件到上一步创建的目录
4.检查是否已安装过MySQL
[root@localhost /]# rpm -qa | grep -i mysql
MySQL-client-5.5.42-1.el6.x86_64
MySQL-server-5.5.42-1.el6.x86_64
5.如果已安装则移除,否则请跳过此步
[root@localhost /]# yum -y remove MySQL-server-5.5.42-1.el6.x86_64
[root@localhost /]# yum -y remove MySQL-client-5.5.42-1.el6.x86_64
删除老版本mysql的开发头文件和库
rm -fr /usr/lib/mysql
rm -fr /usr/include/mysql
rm -fr /var/lib/mysql
rm -f /etc/https://www.sodocs.net/doc/1f10287892.html,f
6.安装MySQL
[root@localhost /]# cd /sw/mysql55/
[root@localhost mysql55]# rpm -ivh MySQL-server-5.5.42-1.el6.x86_64.rpm
Preparing... ########################################### [100%] 1:MySQL-client ########################################### [100%] [root@localhost mysql55]# rpm -ivh MySQL-client-5.5.42-1.el6.x86_64.rpm
Preparing... ########################################### [100%] 1:MySQL-server ########################################### [100%]
7.配置MySQL
[root@localhost mysql55]# cp /usr/share/mysql/https://www.sodocs.net/doc/1f10287892.html,f /etc/https://www.sodocs.net/doc/1f10287892.html,f
[root@localhost mysql55]# vi /etc/https://www.sodocs.net/doc/1f10287892.html,f
[client]
#password = your_password
port = 8819
socket = /var/lib/mysql/mysql.sock
default-character-set=utf8
[mysqld]
port = 8819
socket = /var/lib/mysql/mysql.sock
lower_case_table_names=1
skip-external-locking
key_buffer_size = 384M
max_allowed_packet = 8M
table_open_cache = 512
sort_buffer_size = 2M
read_buffer_size = 2M
read_rnd_buffer_size = 8M
myisam_sort_buffer_size = 64M
thread_cache_size = 8M
query_cache_size = 32M
# Try number of CPU's*2 for thread_concurrency
thread_concurrency = 16
max_connections=10000
character-set-server=utf8
wait_timeout=31536000
interactive_timeout=31536000
user = mysql
default_storage_engine = InnoDB
pid-file = /var/lib/mysql/mysql.pid datadir = /var/lib/mysql/
log_bin = /var/lib/mysql/mysql-bin
log_error = /var/lib/mysql/mysql-error.log log_queries_not_using_indexes = 1
#second
long_query_time = 10
slow_query_log = 1
slow_query_log_file = /var/lib/mysql/mysql-slow.log server-id = 1
binlog_format=mixed
[mysqldump]
quick
max_allowed_packet = 16M
[mysql]
no-auto-rehash
default-character-set=utf8
[myisamchk]
key_buffer_size = 256M
sort_buffer_size = 256M
read_buffer = 2M
write_buffer = 2M
[mysqlhotcopy]
interactive-timeout
启动MySQL
[root@localhost mysql55]# service mysql start
8.初始化MySQL root用户密码,比如设置密码为:123456
[root@localhost mysql]# mysql_secure_installation
9.登录mysql后台管理程序
[root@localhost mysql]# mysql -u root -p123456
mysql>
10.添加新账号
mysql> grant all on *.* to 'dtoa'@'%' identified by 'dtoa123456';
Query OK, 0 rows affected (0.00 sec)
mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)
11.设置为开机自动启动
[root@localhost mysql]# chkconfig mysql on
2生产环境下MySQL数据库主从同步配置
2.1 主数据库配置
2.1.1.检查mysql的配置文件:
# vi /etc/https://www.sodocs.net/doc/1f10287892.html,f
在[mysqld]这个Section确认以下配置
log_bin = /var/lib/mysql/mysql-bin#配置在数据库有变动时写二进制日志
server-id = 1 #标识,唯一,值范围在:1至2^23-1 binlog-do-db = dtoa # 要给从机同步的库
保存退出。
重启mysql 服务。
# Service mysql restart
2.1.2. 进入mysql配置:
登录mysql后台管理程序
# mysql -u root -p123456
添加新账号
mysql> grant all on *.* to 'dtoa'@'%' identified by 'dtoa123456';
锁主库表:
mysql>flush tables with read lock;
显示主库信息,记录file和position,从库设置会用到。
mysql>show masterstatus;
+------------------+----------+--------------+------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+----------+--------------+------------------+
| mysql-bin.000004 | 106 | | |
+------------------+----------+--------------+------------------+
退出mysql
mysql>quit;
2.1.
3. linuxShell中对数据库的操作
备份主机上的dtoa数据库:
#mysqldump --master-data –u root –p dtoa > dtoa.sql
把备份文件传到从机
#rsync -vzrtopg dtoa.sql root@从机ip:/sw/
进入mysql,解锁主库表
# mysql -u root -p123456
mysql>unlock tables;
注:配置文件还可以配置的参数可根据情况选择设置:
[mysqld]
binlog-do-db = db2 # 要给从机同步的库
binlog-ignore-db = mysql # 不给从机同步的库
expire_logs_days = 2 # 自动清理2 天前的log文件,可根据需要修改
2.2 从数据库配置
检查mysql的配置文件:
# vi /etc/https://www.sodocs.net/doc/1f10287892.html,f
在[mysqld]这个Section确认以下配置
log_bin = /var/lib/mysql/mysql-bin#配置在数据库有变动时写二进制日志
server-id = 2 #标识,唯一,值范围在:1至2^23-1
replicate-do-db =dtoa #如果不设置就是要同步所有数据库
保存退出。
重启mysql 服务。
# Service mysql restart
#mysql -u root –p>>>输入密码进入mysql
Mysql>create database dtoa; 创建dtoa数据库
Mysql>quit;
导入dtoa.sql数据:
#mysql -u root -p dtoa < /sw/dtoa.sql
登陆mysql,设置从库的线程
# mysql -u root -p123456
mysql> stop slave;
mysql> change master to master_host='主库ip',
master_user='dto a',master_password='dtoa123456',master_log_file=’mysql-bin.000004’,master_ log_pos=106; #后两个就是刚才记录的主库file和position值
mysql> start slave;
注:配置文件还可以配置的参数,可根据情况选择:
[mysqld]
replicate-ignore-db = mysql # 不从主机同步的数据库(多个写多行)
replicate-do-db = db1 # 要从主机同步的库(多个写多行)
replicate-do-db = db2 # 要从主机同步的库(多个写多行)
log-slave-update # 启用从机服务器上的slave日志功能,使这台计算机可以
#用来构成一个镜像链(A->B->C)
slave-skip-errors # 跳过错误
3监控服务器
3.1监控主数据库服务器
运行于主数据库
mysql> show master status;
+------------------+----------+--------------+------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+----------+--------------+------------------+
| mysql-bin.000004 | 106 | | |
+------------------+----------+--------------+------------------+
1 row in set (0.00 sec)
其中File是表示日志记录的文件,而Position则是表示当前日志在文件中的位置,这个也是从数据库服务器上执行复制操作必须的标识,后面的两个字段分别表示要记录的数据库名称和不需要记录的数据库名称,我们也可以在配置文件中进行配置。
3.2监控从数据库服务器
运行于从数据库
mysql> show slave status\G;
*************************** 1. row ***************************
Slave_IO_State: Waiting for master to send event
Master_Host: 192.168.117.128
Master_User: dtoa
Master_Port: 8819
Connect_Retry: 30
Master_Log_File: mysql-bin.000004
Read_Master_Log_Pos: 106
Relay_Log_File: mail-relay-bin.000221
Relay_Log_Pos: 15149444
Relay_Master_Log_File: mysql-bin.000009
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
Replicate_Do_DB: dtoa
Replicate_Ignore_DB:
部分释义:
① Slave_IO_State:线程已经连接上主服务器,正等待二进制日志事件到达。
② Master_Host: 主机IP
③ Master_Log_File和Read_Master_Log_Pos选项执行CHANGE MASTER TO来告诉从服务器重新从该点读取二进制日志
④ Slave_IO_Running:是否要从Master复制二进制数据
⑤ Slave_SQL_Running:是否执行从Master复制过来的二进制数据
⑥ Slave_IO_Running和Slave_SQL_Running的值均为Yes时为同步开启;
⑦ Last_Errno和Last_Error是错误信息的提示(如果有错误)
⑧ Seconds_Behind_Master:Slave的数据落后Master的多少秒,同步完成为0
注:如果从数据库服务器在同步的过程中出现了问题,那么我们可以通过reset slave来重置从数据库服务器的复制线程。
主从数据库常用命令:
Slave start; --启动复制线程
Slave stop; --停止复制线程
Reset slave; --重置复制线程
Show slave status; --显示复制线程的状态
Show slave status\G;--显示复制线程的状态(分行显示)
Show master status\G;--显示主数据库的状态(分行显示)
Show master logs --显示主数据库日志,需在主数据库上运行
Change master to; --动态改变到主数据库的配置
Show processlist --显示有哪些线程在运行
从本节开始正式介绍各种SQL语句。本节介绍有关数据库级的SQL以及相关操作,查看、建立和删除等操作。 用SHOW显示已有的数据库 句法:SHOW DATABASES [LIKE wild] 如果使用LIKE wild部分,wild字符串可以是一个使用SQL的“%”和“_”通配符的字符串。 功能:SHOW DATABASES列出在MySQL服务器主机上的数据库。 你可以尝试下面举例,观察输出结果,例如: mysql>show databases; +----------+ | Database | +----------+ | first | | mysql | | mytest | | test | | test1 | +----------+ mysql>show databases like ‘my%’; +----------------+ | Database (my%) | +----------------+ | mysql | | mytest | +----------------+
用mysqlshow程序也可以得到已有数据库列表。 用Create Dabase 创建数据库 句法:CREATE DATABASE db_name 功能:CREATE DATABASE用给定的名字创建一个数据库。 如果数据库已经存在,发生一个错误。 在MySQL中的数据库实现成包含对应数据库中表的文件的目录。因为数据库在初始创建时没有任何表,CREATE DATABASE语句只是在MySQL数据目录下面创建一个目录。 例如: mysql>create database myfirst; 然后利用show databases观察效果。 用DROP DATABASE删除数据库 句法:DROP DATABASE [IF EXISTS] db_name 功能:DROP DATABASE删除数据库中的所有表和数据库。要小心地使用这个命令! DROP DATABASE返回从数据库目录被删除的文件的数目。通常,这3倍于表的数量,因为每张表对应于一个“.MYD”文件、一个“.MYI”文件和一个“.frm”文件。 在MySQL 3.22或以后版本中,你可以使用关键词IF EXISTS阻止一个错误的发生,如果数据库不存在。 使用mysqladmin工具创建和删除 在命令行环境下可以使用mysqladmin创建和删除数据库。 创建数据库: shell> mysqladmin create db_name 删除数据库: shell> mysqladmin drop db_name 如果出现下面的错误:
1.mysql数据同步实现原理 即读写操作在两台服务器上进行,每台服务器即主也是从。当其中的任何一台服务器收到操作请求时,其进行相应的数据变化,并把变化的数据复制到另一台服务器中。 2.配置服务器master 初始服务器 通过mysql工具连接服务器master后,新建两个数据库audit,idm。导入初始化数据库文件,完成数据库的初始化 给用户授权 从开始菜单中打开mysql5的命令行,输入正确的密码,进入mysql控制台命令行模式后,输入如下命令: #授权来自192.168.0.189的backup用户拥有对所有库的复制数据的权限,该用户的密码设为123456 GRANT REPLICATION SLAVE ON *.* TO 'backup'@'192.168.0.189' IDENTIFIED BY '123456'; #刷新权限设置 FLUSH PRIVILEGES ; 修改配置文件 修改主目录中的my.inf文件,在mysqld下面加入如下内容 server-id = 1 log-bin=mysql-bin binlog-do-db = audit binlog-do-db = idm binlog-ignore-db = information_schema binlog-ignore-db = mysql binlog-ignore-db = test master-host = 192.168.0.189 master-user = backup master-password = 123456 master-port = 3306
replicate-do-db = audit replicate-do-db = idm master-connect-retry = 60 3.配置服务器slave 初始服务器 通过mysql工具连接服务器ha002后,新建两个数据库audit,idm。导入初始化数据库文件,完成数据库的初始化 给用户授权 从开始菜单中打开mysql5的命令行,输入正确的密码,进入mysql控制台命令行模式后,输入如下命令: #授权来自192.168.0.188的backup用户拥有对所有库的复制数据的权限,该用户的密码设为123456 GRANT REPLICATION SLAVE ON *.* TO 'backup'@'192.168.0.188' IDENTIFIED BY '123456'; #刷新权限设置 FLUSH PRIVILEGES ; 修改配置文件 修改主目录中的my.inf文件,在mysqld下面加入如下内容 server-id = 2 master-host = 192.168.0.188 master-user = backup master-password = 123456 master-port = 3306 relicate-do-db = audit replicate-do-db = idm master-connect-retry = 60 log-bin=mysql-bin binlog-do-db = audit binlog-do-db = idm binlog-ignore-db = information_schema
美河学习在线https://www.sodocs.net/doc/1f10287892.html, MySQL主从复制 MySQL主从复制、搭建、状态检查、中断排查及备库重做 本文档主要对MySQL主从复制进行简单的介绍,包括原理简介、搭建步骤、状态检查、同步中断及排查、备库重建。
目录 一、MySQL主从复制概述 (2) 1、主从复制简介 (2) 2、主从复制原理、机制 (2) 3、主从复制原理图 (3) 二、MySQL主从复制搭建 (4) 1、Master端配置部署 (4) 2、Slave端配置部署 (4) 3、建立主从同步 (4) 三、主从复制状态检查及异常处理 (6) 1、主从复制状态检查 (6) 2、IO_thread异常 (7) 3、sql_thread异常 (8) 4、主从复制延迟 (9)
一、MySQL主从复制概述 1、主从复制简介 MySQL主从复制就是将一个MySQL实例(Master)中的数据实时复制到另一个MySQL实例(slave)中,而且这个复制是一个异步复制的过程。 实现整个复制操作主要由三个进程完成的,其中两个进程在Slave(sql_thread和IO_thread),另外一个进程在 Master(IO进程)上。 2、主从复制原理、机制 要实施复制,首先必须打开Master端的binary log(bin-log)功能,否则无法实现。因为整个复制过程实际上就是Slave从Master端获取该日志然后再在自己身上完全顺序的执行日志中所记录的各种操作。 复制的基本过程如下: 1)、Slave上面的IO_thread连接上Master,并请求从指定日志文件的指定位置(或者从最开始的日志)之后的日志内容; 2)、Master接收到来自Slave的IO_thread的请求后,通过负责复制的IO进程根据请求信息读取制定日志指定位置之后的日志信息,返回给Slave 的IO_thread。返回信息中除了日志所包含的信息之外,还包括本次返回的信息已经到Master端的bin-log file的以及bin-log pos; 3)、Slave的IO_thread接收到信息后,将接收到的日志内容依次添加到Slave端的relay-log文件的最末端,并将读取到的Master端的 bin-log的文件名和位置记录到master-info文件中,以便在下一次读取的时候能够清楚的告诉Master“我需要从某个bin-log的哪个位置开始往后的日志内容,请发给我”; 4)、Slave的Sql_thread检测到relay-log中新增加了内容后,会马上解析relay-log 的内容成为在Master端真实执行时候的那些可执行的内容,并在本数据库中执行。
关于CLOSE BY CLIENT STACK TRACE 程序正常运行,数据库连接可以获取,一些列操作都可以实现,可在debug信息中总会一段时间就报如下错误: https://www.sodocs.net/doc/1f10287892.html,ng.Exception: DEBUG -- CLOSE BY CLIENT STACK TRACE at com.mchange.v2.c3p0.impl.NewPooledConnection.close(NewPooled Connection.java:566) at com.mchange.v2.c3p0.impl.NewPooledConnection.close(NewPooled Connection.java:234) at com.mchange.v2.c3p0.impl.C3P0PooledConnectionPool$1PooledCon nectionResourcePoolManager.destroyResource(C3P0PooledConnecti onPool.java:470) at com.mchange.v2.resourcepool.BasicResourcePool$1DestroyResource Task.run(BasicResourcePool.java:964) at com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThrea d.run(ThreadPoolAsynchronousRunner.java:547) 跟踪错误代码,发现是c3p0内部的异常输出(红色部分)
C3p0相关源码: com.mchange.v2.c3p0.impl. NewPooledConnection public synchronized void close() throws SQLException { close( null ); } private void close( Throwable cause ) throws SQLException { close( cause, false ); } private void close( Throwable cause, boolean forced ) throws SQLException { 。。。。。。。。。。。。。。。。 if ( cause == null ) { this .invalidatingException = NORMAL_CLOSE_PLACEHOLDER; if ( Debug.DEBUG&& logger.isLoggable( MLevel.FINEST ) ) logger.log( MLevel.FINEST, this + " closed by a client.", new Exception("DEBUG -- CLOSE BY CLIENT STACK TRACE") ); logCloseExceptions( null , closeExceptions ); if (closeExceptions.size() > 0) throw new SQLException("Some resources failed to close properly while closing " + this );
Mysql数据库学习心得(1) 由于工作中需要使用mysql,笔者通过网上学习,动手实践,终于从一个"数据库菜鸟"变成了能熟练操作mysql的"准大虾"了,:)。现将学习心得整理如下。 MySQL是完全网络化的跨平台关系型数据库系统,一个真正的多用户、多线程SQL数据库服务器,同时是具有客户机/服务器体系结构的分布式数据库管理系统。它具有功能强、使 用简便、管理方便、运行速度快、安全可靠性强等优点,用户可利用许多语言编写访问MySQL数据库的程序,对于中、小型应用系统是非常理想的。除了支持标准的ANSI SQL语句,更重要的是,它还支持多种平台,而在Unix系统上该软件支持多线程运行方式,从而能获得相当好的性能。对于不使用Unix的用户,它可以在Windows NT系统上以系统服务方式运行,或者在Windows 95/98系统上以普通进程方式运行。而在Unix/Linux系统上,MySQL支持多线程运行方式,从而能获得相当好的性能,而且它是属于开放源代码软。 MySQL是以一个客户机/服务器结构的实现,它由一个服务器守护程序mysqld和很多不同的客户程序和库组成,MySQL的执行性能非常高,运行速度非常快,并非常容易使用,是一个非常棒的数据库。MySQL的官方发音是"My Ess Que Ell"(不是MY-SEQUEL )。 一.获得MySQL 首先必须下载MySQL。Mysql的官方网站是:,在中国的镜像是:或者:,可以下载MySQL的稳定版本截止到笔者发稿为止)。其版本名称是,不但免费而且没有所谓的"30天使用期限"。 二.MySQL的安装 (一)在Win98/Winnt下的安装 到一个目录,运行Setup程序,会提示整个安装的过程。它默认安装到c:mysql下,如果要安装到其它目录下还有改动一些东西,作为初学者,可以先不管,以默认的目录安装。好了,安装后,进入c:mysql in 目录下,运行文件在Win98下直接运行,正常情况下,没有什么提示信息。 1。将下载后的文件解压解压到一个临时目录。 2。点击安装到c:mysql(默认)。 3。将拷贝到c:,把文件中的#basedir=d:/mysql/改为basedir=c:mysql。 4。进入msdos,到目录c:mysql in。 5。输入mysqld-shareware -install,此为启动Mysql数据库服务。
MYSQL四种备份方法总结 Mysql数据库备份主要有4种方法: 1、mysqldump 2、直接拷贝(cp、tar,gzip,cpio) 3、mysqlhotcopy 4、同步复制 mysqldump生成能够移植到其它机器的文本文件,缺省地,文件内容包含创建正在倾倒的表的CREATE语句和包含表中行数据的INSERT语句。也就是说,mysqldump产生的输出可在以后用作mysql的输入来重建数据库。mysqldump比直接拷贝要慢些。 使用直接拷贝,如果正在备份的表正被读写就容易导致表损坏,而且不建议对isam表使用直接拷贝的方法来备份,因为ISAM表只能在相似的硬件结构的机器上拷贝。 1、mysqldump备份: 使用方法:mysqldump [OPTIONS] database [tables] 输出文件的开头看起来象这样: # MySQL Dump 6.0 # # Host: localhost Database: samp_db #--------------------------------------- # Server version 3.23.2-alpha-log # # Table structure for table 'absence' # CREATE TABLE absence( student_id int(10) unsigned DEFAULT '0' NOT NULL, date date DEFAULT '0000-00-00' NOT NULL, PRIMARY KEY (student_id,date) ); # # Dumping data for table 'absence' # INSERT INTO absence VALUES (3,'1999-09-03'); INSERT INTO absence VALUES (5,'1999-09-03'); INSERT INTO absence VALUES (10,'1999-09-08'); ...... 文件剩下的部分有更多的INSERT和CREATE TABLE语句组成。例: %mysqldump samp_db >/opt/mysqldatabak/samp_db.2006-5-15 %mysqldump samp_db | gzip >/usr/archives/mysql/samp_db.1999-10-02.gz #产生压缩备份 %mysqldump samp_db student score event absence >grapbook.sql #备份数据库的某些表 %mysqladmin -h https://www.sodocs.net/doc/1f10287892.html, create samp_db %mysqldump samp_db | mysql -h https://www.sodocs.net/doc/1f10287892.html, samp_db #直接恢复到另一个服务器上使用--add-drop-table选项告诉服务器将DROP TABLE IF EXISTS语句写入备份文件,这样当我们以后用来恢复数据库时,如果表已经存在,你
一、概述 MySQL从3.23.15版本以后提供数据库复制(replication)功能,利用该功能可以实现两个数据库同步、主从模式、互相备份模式的功能。本文档主要阐述了如何在linux系统中利用mysql的replication进行双机热备的配置。 二、环境 操作系统:Linux 2.6.23.1-42.fc8 # SMP(不安装XEN) Mysql版本:5.0.45-4.fc8 设备环境:PC(或者虚拟机)两台 三、配置 数据库同步复制功能的设置都在MySQL的配置文件中体现,MySQL的配置文件(一般是https://www.sodocs.net/doc/1f10287892.html,f):在本环境下为/etc/https://www.sodocs.net/doc/1f10287892.html,f 。 3.1 设置环境: IP 的设置: A主机 IP:10.10.0.119 Mask:255.255.0.0 B主机 IP:10.10.8.112 Mask:255.255.0.0 在IP设置完成以后,需要确定两主机的防火墙确实已经关闭。可以使用命令service iptables status 查看防火墙状态。如果防火墙状态为仍在运行。使用service iptables stop 来停用防火墙。如果想启动关闭防火墙,可以使用setup 命令来禁用或定制。 最终以两台主机可以相互ping通为佳。 3.2 配置A主(master) B从(slave)模式 3.2.1 配置A 为master 1、增加一个用户同步使用的帐号: GRANT FILE ON *.* TO ‘backup’@'10.10.8.112' IDENTIFIED BY ‘1234’; GRANT REPLICATION SLAVE ON *.* TO ‘backup’@'10.10.8.112' IDENTIFIED BY ‘1234’; 赋予10.10.8.112也就是Slave 机器有File权限,只赋予Slave机器有File权限还不行,还要给它REPLICATION SLAVE的权限才可以。 2、增加一个数据库作为同步数据库: create database test; 3、创建一个表结构: create table mytest (username varchar(20),password varchar(20)); 4、修改配置文件: 修改A的/etc/https://www.sodocs.net/doc/1f10287892.html,f 文件,在https://www.sodocs.net/doc/1f10287892.html,f 配置项中加入下面配置:server-id = 1 #Server 标识 log-bin
下面是C语言连接mysql数据库简单例子: 编译方式: gcc -I /usr/local/mysql/include/ -L /usr/local/mysql/lib/ -l mysqlclient select.c -o select 源码: #include
Vs2010连接Mysql数据库方法 下载MySQL 5.5.13 正式版:https://www.sodocs.net/doc/1f10287892.html,/html/361.html ------------------------------------------- 操作系统:winxp-32bit 数据库:MySQL Server 5.5 (安装路径:D:\Program Files\MySQL\MySQL Server 5.5) IDE: Microsoft Visual Studio 2010 untimate/Professional (以上东西都是完整安装的) ------------------------------------------- 一、VC设置 1、新建一个工程,随便写一个helloworld,目的是就是让工程下的“debug”文件夹出现 2、把D:\Program Files\MySQL\MySQL Server 5.5\lib下面的libmysql.dll复制到工程的debug文件夹里面 3、接下来要设置一些引用文件的环境变量,首先,点击项目->属性->vc++目录。 然后“include目录”那把“D:\Program Files\MySQL\MySQL Server 5.5\include”给加进来 再然后“lib目录”那里把“D:\Program Files\MySQL\MySQL Server 5.5\lib”也一起加进来 VC6.0设置: (1)打开VC6.0 工具栏Tools菜单下的Options选项,在Directories的标签页中右边的“Show directories for:”下拉列表中选中“Includefiles”,然后在中间列表框中添加你本地安装MySQL的include目录路径。(我的是D:\Program Files\MySQL\MySQL Server 5.5\include)。 (2)在上面说到的“Show directories for:”下拉列表中选中“Library files”,然后添加你本地安装MySQL的Lib目录路径。Lib目录下有debug目录,选debug。(我的是D:\Program Files\MySQL\MySQL Server 5.5\lib\debug)。 4、然后在项目->属性窗口下点击:连接器->输入->附加依赖项,把"libmysql.lib"写进去VC6.0设置:在“Project settings->Link:Object/library modules”里面添加“libmysql.lib”。 使用VC++编译时再添加以下项: 5、在stdafx.h里面添加如下的内容: #include "mysql.h" #include "winsock.h" // 如果编译出错,则把该行放到#include "mysql.h"之前#pragma comment(lib,"libmySQL.lib") // 如果在附加依赖项里已增加,则就不要添加了 二、数据库的相关操作 1、打开“开始->所有程序->MySQL->MySQL Server 5.5->MySQL Command Line Client.exe”,如果有密码就输入密码,没有设置密码就直接按回车,会提示服务器启动成功。
MYSQL数据库基本操作命令 用户名和密码:123456 创建一个名称为mydb1的数据库。 create database mydb1; 查看所有数据库 show databases; 创建一个使用utf-8字符集的mydb2数据库。 create database mydb2 character set utf8; 创建一个使用utf-8字符集,并带校对规则的mydb3数据库。 create database mydb3 character set utf8 collate utf8_general_ci; 显示库的创建信息 show create database mydb3; 删除前面创建的mydb1数据库 drop database mydb1; 查看服务器中的数据库,并把其中某一个库的字符集修改为gb2312; alter database mydb2 character set gb2312; show create database mydb2; 备份库 1、准备库的数据 create database mydb1; use mydb1; create table test ( id int ); insert into test(id) values(1); select * from test; 2、删除库:drop database mydb1; 3、 4.1 创建库:create database mydb1; 4.2 \. test.sql (通过执行脚本文件实现) 5、
创建一个员工表 use mydb1; 进入库 create table employee ( id int, name varchar(20), gender varchar(4), birthday date, entry_date date, job varchar(40), salary double, resume text )character set utf8 collate utf8_general_ci; 查看库中所有表 show tables; 查看表的创建细节 show create table employee; 查看表的结构 desc employee; 在上面员工表的基本上增加一个image列。 alter table employee add image blob; 修改job列,使其长度为60。 alter table employee modify job varchar(60); 删除sex列。 alter table employee drop gender; 表名改为user。 rename table employee to user; 修改表的字符集 alter table user character set gb2312; show create table user; 列名name修改为username alter table user change column name username varchar(20); 使用insert语句向表中插入一个员工的信息。 insert into employee(id,username,birthday,entry_date,job,salary,resume)
mysql数据库同步跳过临时错误 slave stop; set GLOBAL SQL_SLAVE_SKIP_COUNTER=1; slave start; 几个跟热备有关的mysql命令:(需要在mysql命令行界面或query ) stop slave #停止同步 start slave #开始同步,从日志终止的位置开始更新。 show slave status #查看同步状态 SET SQL_LOG_BIN=0|1 #主机端运行,需要super权限,用来开停日志,随意开停,会造成主机从机数据不一致,造成错误 SET GLOBAL SQL_SLAVE_SKIP_COUNTER=n # 客户端运行,用来跳过几个事件,只有当同步进程出现错误而停止的时候才可以执行。 RESET MASTER #主机端运行,清除所有的日志,这条命令就是原来的FLUSH MASTER RESET SLAVE #从机运行,清除日志同步位置标志,并重新生成https://www.sodocs.net/doc/1f10287892.html, 虽然重新生成了https://www.sodocs.net/doc/1f10287892.html,,但是并不起用,最好,将从机的mysql进程重启一下,LOAD TABLE tblname FROM MASTER #从机运行,从主机端重读指定的表的数据,每次只能读取一个,受timeout时间限制,需要调整timeout时间。执行这个命令需要同步账号有 reload 和super权限。以及对相应的库有select权限。如果表比较大,要增加net_read_timeout 和 net_write_timeout的值 LOAD DATA FROM MASTER #从机执行,从主机端重新读入所有的数据。执行这个命令需要同步账号有reload和super权限。以及对相应的库有select权限。如果表比较大,要增加net_read_timeout 和 net_write_timeout的值 CHANGE MASTER TO master_def_list #在线改变一些主机设置,多个用逗号间隔,比如CHANGE MASTER TO MASTER_HOST='https://www.sodocs.net/doc/1f10287892.html,', MASTER_USER='replication', MASTER_PASSWORD='bigs3cret' MASTER_POS_WAIT() #从机运行 SHOW MASTER STATUS #主机运行,看日志导出信息 SHOW SLAVE HOSTS #主机运行,看连入的从机的情况。 SHOW SLAVE STATUS (slave) SHOW MASTER LOGS (master) SHOW BINLOG EVENTS [ IN 'logname' ] [ FROM pos ] [ LIMIT [offset,] rows ] PURGE [MASTER] LOGS TO 'logname' ; PURGE [MASTER] LOGS BEFORE 'date'
一:MySQL复制: MySQL复制简介: 将master服务器中主数据库的ddl和dml操作通过二进制日志传到slaves服务器上,然后在master服务器上将这些日志文件重新执行,从而使得slave服务器和master服务器上的数据信息保持同步。 Mysql复制的原理: 将数据分布到多个系统上去,是通过将Mysql的某一台master主机的数据复制到其它(slave)主机上,并重新执行一遍来实现的; 复制过程中一个服务器充当master服务器,而一台或多台其它服务器充当slave服务器。master服务器将更新写入二进制日志文件,并维护文件的一个索引以跟踪日志循环。 这些日志可以记录发送到slave服务器的更新。当一个slaves服务器连接master服务器时,它通知master服务器从服务器在日志中读取的最后一次成功更新的位置。slave服务器接收从那时起发生的任何更新,然后封锁并等待master服务器通知新的更新。 mysql复制的优点: 在slave服务器上执行查询操作,降低master服务器的访问压力 当master服务器上出现了问题可以切换到slave服务器上,不会造成访问中断等问题 在slave服务器上进行备份,以避免备份期间影响master服务器的服务使用及日常访问
Mysql自身的复制功能:是构建大型、高性能应用程序的基础。 mysql支持的复制类型: 基于语句的复制:在主服务器上执行的SQL语句,在从服务器上执行同样的语句。MySQL默认采用基于语句的复制,效率比较高。一旦发现没法精确复制时,会自动选着基于行的复制。 基于行的复制:把改变的内容复制过去,而不是把命令在从服务器上执行一遍. 从mysql5.0开始支持 混合类型的复制::默认采用基于语句的复制,一旦发现基于语句的无法精确的复制时,就会采用基于行的复制。 MySQL复制技术的特点: 数据分布(Data distribution ) 备份(Backups) 负载平衡(load balancing) 高可用性和容错性High availability and failover 复制的工作过程: master将改变记录到二进制日志(binary log)中(这些记录叫做二进制日志事件,binary log events); slave将master的binary log events拷贝到它的中继日志(relay log); slave重做中继日志中的事件,将改变反映它自己的数据。
./configure --prefix=/usr/local/mysql \ --without-debug \ #去除debug模式. --enable-thread-safe-client \ #以线程方式编译客户端. --with-pthread \ #强制使用pthread线程库编译. --enable-assembler \ #允许使用汇编模式. --enable-profiling \ #Build a version with query profiling code (https://www.sodocs.net/doc/1f10287892.html,munity-features) --with-mysqld-ldflags=-all-static \ #静态编译mysqld的额外link参数. --with-client-ldflags=-all-static \ #静态编译client的额外link参数. --with-charset=utf8 \ #默认字符utf8. --with-extra-charsets=all \ #支持所有的语言字符. --with-innodb \ #innodb数据引擎. --with-plugins=innobase \ --with-plugins=heap \ #内存数据引擎. --with-mysqld-user=mysql \ #mysql安装使用的帐号 --without-embedded-server \ #去除安装embedded-server. --with-server-suffix=-community \ #社区形式安装. --with-unix-socket-path=/tmp/mysql.sock MYSQl启动的一般设置: /etc/https://www.sodocs.net/doc/1f10287892.html,f基本部设参数设置. # back_log 是操作系统在监听队列中所能保持的连接数, # 队列保存了在MySQL连接管理器线程处理之前的连接. # 如果你有非常高的连接率并且出现"connection refused" 报错, # 你就应该增加此处的值. # 检查你的操作系统文档来获取这个变量的最大值. # 如果将back_log设定到比你操作系统限制更高的值,将会没有效果 # 在MYSQL的连接请求等待队列中允许存放的最大连接请求数. defautl=50,最大65535,根据os对网络监听队列的情况来设置. back_log = 20000 # MySQL 服务所允许的同时会话数的上限 # 其中一个连接将被SUPER权限保留作为管理员登录. # 即便已经达到了连接数的上限. # 整个Mysql允许的最大连接数.这个参数会影响mysql的应用并发处理能力.有些资料上提到 500-800,以我们的机子来说单个mysql实例设置10000应该是没有问题的。如果还需可能需要第三方软件解决php连接池的问题,提高还需要连接池. max_connections = 10000 # 每个客户端连接最大的错误允许数量,如果达到了此限制. # 这个客户端将会被MySQL服务阻止直到执行了"FLUSH HOSTS" 或者服务重启 # 非法的密码以及其他在链接时的错误会增加此值. # 查看 "Aborted_connects" 状态来获取全局计数器. max_connect_errors = 10
MySQL数据库运维 MySQL数据库作为世界上最流行的开源数据库,以简单、易用、开源等特点,收到互联网行业的推崇。随着去IOE运动的如火如荼,MySQL数据库已经深入到传统行业,大有改变行业格局。而与此同时,MySQL数据库规模成倍的增长,如何快速定位问题,解决问题?如何规模化、自动化运维?如何进行优化,提高MySQL数据库的性能?如何架构部署MySQL集群、架构跨IDC的分布式MySQL集群?如何实现MySQL数据库的HA?将在本课程中跟大家分享。 课程大纲: 第1课机器选型、系统规划 机器选型 业务评估--根据业务进行评估,转化为机器资源需求。 SSD vs HDD--熟悉SSD和HDD的架构设计,了解SSD的发展趋势。 成本评估--通过成本评估,选择合适机型。 系统规划 文件系统规划--根据MySQL的特点,规划文件系统,IO调度。 数据库配置--根据IO写入特点,配置MySQL数据库。 第2课安装部署 源码编译--源码编译安装操作处理方法。
功能定制--定制mysql的Server限流,SQL限流,并行复制,ThreadPool功能。 规模化部署--了解打包、配置模板、数据目录等统一管理方法。 版本升级--跨版本升级如何做到安全可靠? 资源池管理--资源管理、实例分配、资源利用率等。 第3课压力测试 TPC-C模型--了解TPC-C模型设计。 测试工具--熟悉常用的数据库测试工具。 基准测试--介绍只读测试、TPCC测试、读写比测试方法。 定制测试--介绍定制sql模型、定制测试工具、流量加速回放等方法。 评估标准--介绍评估测试结果的基本参数标准。 第4课性能优化 参数优化--详细介绍与MySQL数据库息息相关的性能参数和优化方法。 性能优化--详细介绍系统层优化和MySQL功能优化。(NUMA、MALLOC等) 第5课字符集和权限安全 字符集 常见问题--介绍字符集乱码的常见问题以及解决方法。 注意事项--介绍字符集设置的注意事项,以及如何规避。 权限安全
Mysql数据库安装及生产环境下主从库同步配置
目录 1安装M YSQL数据库...................................................................................................................................... 2生产环境下M Y SQL数据库主从同步配置................................................................................................. 2.1 主数据库配置 (5) 2.2 从数据库配置 (5) 3监控服务器............................................................................................................................................... 3.1 监控主数据库服务器 (6) 3.2 监控从数据库服务器 (6)
1安装Mysql数据库 安装环境: 系统:CentOS-6.6-x86_64 数据库:MySQL-server-5.5.42-1.el6.x86_64;MySQL-client-5.5.42-1.el6.x86_64 1.SSH方式登录到MySQL服务器 2.创建存放安装文件的目录 [root@localhost /]# mkdir -p /sw/mysql55 3.上传安装文件到上一步创建的目录 4.检查是否已安装过MySQL [root@localhost /]# rpm -qa | grep -i mysql MySQL-client-5.5.42-1.el6.x86_64 MySQL-server-5.5.42-1.el6.x86_64 5.如果已安装则移除,否则请跳过此步 [root@localhost /]# yum -y remove MySQL-server-5.5.42-1.el6.x86_64 [root@localhost /]# yum -y remove MySQL-client-5.5.42-1.el6.x86_64 删除老版本mysql的开发头文件和库 rm -fr /usr/lib/mysql rm -fr /usr/include/mysql rm -fr /var/lib/mysql rm -f /etc/https://www.sodocs.net/doc/1f10287892.html,f 6.安装MySQL [root@localhost /]# cd /sw/mysql55/ [root@localhost mysql55]# rpm -ivh MySQL-server-5.5.42-1.el6.x86_64.rpm Preparing... ########################################### [100%] 1:MySQL-client ########################################### [100%] [root@localhost mysql55]# rpm -ivh MySQL-client-5.5.42-1.el6.x86_64.rpm Preparing... ########################################### [100%] 1:MySQL-server ########################################### [100%] 7.配置MySQL [root@localhost mysql55]# cp /usr/share/mysql/https://www.sodocs.net/doc/1f10287892.html,f /etc/https://www.sodocs.net/doc/1f10287892.html,f [root@localhost mysql55]# vi /etc/https://www.sodocs.net/doc/1f10287892.html,f [client] #password = your_password port = 8819 socket = /var/lib/mysql/mysql.sock default-character-set=utf8 [mysqld] port = 8819 socket = /var/lib/mysql/mysql.sock lower_case_table_names=1