MySql数据库

本文围绕MySQL数据库展开,介绍了其概论,包含连接、用户管理、密码修改等操作;阐述数据库备份步骤,如安装服务、进入主从数据库等;还讲解了主主从数据库和主主服务器的配置,以及mysql读写分离,包括建立主从关系和配置amoeba服务器。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

                           MySql数据库

Mysql概论.. 2

Sql命令.. 5

1.连接命令.. 5

2.登录的完整命令.. 5

3.登录服务器数据库地址分三类.. 5

4. 创建和删除用户.. 5

5.  修改密码.. 5

6.管理员找回密码.. 5

7.使用数据库.. 6

8.增加.. 6

9.删除.. 6

10. 改.. 6

4 、查.. 7

5 、授权.. 7

数据库备份.. 7

主从数据库.. 8

1 、安装服务 -  开启服务.. 8

2 、修改配置文件.. 9

3 、进入数据库(主服务器).. 9

4 、进入数据库(从服务器).. 9

主主从数据库.. 9

1. 主服务器.. 9

2.从数据库配置.. 9

主主服务器.. 11

1 、安装服务.. 11

2 、保持mysql版本和数据的一致性.. 11

3 、修改配置文件.. 11

4 、进入主数据库.. 11

5 、进入从数据库.. 11

mysql读写分离.. 12

1.建立两台数据库的主从关系.. 12

2、配置 amoeba服务器.. 12

 

Mysql概论

关系型数据库:MySQL  oracle sqlserver db2  Mariadb(centos7之后默认安装)

非关系型数据库:redis (键值对)

数据库系统相对文件系统优势:

1.数据冗余性和不一致性(数据同步时效性差)

2.数据访问困难 ,数据相对独立,并发访问异常(并发写入会错误,文件并发打开个数有限制,文件格式不同访问困难)

3.完整性和原子性(事物回滚)

4.安全性(分用户限制访问)

数据库(DBMS):指的是以一定的方式存在一起、能为多个用户共享、具有尽可能小的冗余度的特点、是与应用程序彼此独立的数据集合

  1. 数据共享2.减少冗余3.数据集中管理4.数据一致性5.故障恢复

DBMS按照发展可以分为三类:1.层次型(冗余)2.网状型(维护困难)3.关系型

E-R模型:实体、属性、关系

SQL:结构化查询语言,用于,存取,查询,更新,管理关系数据库系统

  1. DML:数据操作语言,操作数据库中数据的命令   select  insert update  delete
  2. DDL:数据库描述语言,建立数据库、定义数据关系     create   drop
  3. DCL:数据库控制语言,控制数据库组件的权限     grant

文件的逻辑关系:   上层:逻辑方式保存的文件  中间层:文件系统(格式化) 

底层:数据块保存的二进制形式存储在硬盘

数据库逻辑关系: 上层:数据表 中间层:存储引擎 底层:逻辑方式保存的文件

存储引擎:存储数据、建立索引以及更新和查询数据等技术的实现方法(将上层数据表翻译到底层,除MySQL有多个存储引擎,其他数据库只有一个)

常用的存储引擎有以下几种:

        1.MyISAM

         MYSQL 默认存储引擎,诞生即存在,插入和查询数据较快。不支持事物、行级锁以及外键约束等功能

         锁:行级锁(InnoDB引擎)、表级锁(MyISAM引擎)、页级锁(DBD 引擎: 相邻的几行锁定)

         约束:域约束(字段的取值范围)、主键约束、外键约束

 

2.InnoDB

         支持事物、行级锁以及外键约束等功能,相对于 MyISAM 更快

3.MEMORY

         运行在内存中、使用 hash 索引,数据存取速度非常快。但是数据不能持久化,适用于缓存

  • 存储管理器:通过  数据描述语言(DDL)来创建表的结构,在通过 数据操作语言(DML) 来保存 SQL 语句产生的数据的数据库组件
    1. 权限及完整性管理器
    2. 事物管理器
    3. 文件管理器
    4. 缓冲区管理器
  • 查询管理器:接收用户的查询请求、理解查询请求、并将请求提交给存储管理器的数据库组件
    1. DDL 和 DML 解释器
    2. 查询执行引擎

Apache Prefork:多子进程,每个子进程有一个线程,一个线程维持一个连接

Worker:多子进程,每个子进程会有多个线程,每个线程维持一个链接

MySQL:    单进程多线程的工作模式,每个线程维持一个连接

守护线程:MySQL 不需要跟用户进行交互

应用线程:MySQL 需要跟用户进行交互

Mysql优化方案:

  1. 垂直扩展(更换硬件,性价比低)2.水平扩展(分布式计算,技术难度大)3.缓存技术4.线程重用5.分区,分表,读写分离
  2. Mysq缺点:SMP 对称多处理器结构(单用户访问只会调用一个CPU)

SQL语句

   安装myql: yum -y install mysql mysql-server

    主配置文件: /etc/my.cnf    端口: 3306

通过 ps  -ef | grep mysql  查看启动mysql 后的启动进程

    /usr/bin/mysqld_safe(启动失败会自动重新加载)

  /usr/libexec/mysql

查看mysql数据目录/var/lib/mysql 中的文件

ibdata1 :数据索引文件

ib_logfiel :事物日志

mysql.sock:套接字文件,包含源地址和目的地址,源端口和目的端口

myql:数据库,里面包括的文件

    *.frm 数据表的格式  *.MYD 数据表的数据内容  *.MYI  数据表的索引文件  

Sql命令:

1.连接命令:mysql 

设置数据库密码 mysqladmin –uroot password  “密码”

         登录:   Mysql –uroot –p

2.登录的完整命令:

mysql -u  用户名 -p  密码 -h  服务器地址 -P  端口 -s 套接字

mysql –uroot –p –P 3306 –h localhost –s /var/lib/mysql/mysql.sock

3.登录服务器数据库地址分三类:

本地(localhost,127.0.0.1,hostname)

远程连接:%

固定ip:192.168.11.46

4. 创建和删除用户:

create user ' 用户名 '@' 登录地址 ' identified by ‘密码’;

删除用户Delete FROM user Where User='test' and Host='localhost';

flush privileges;

删除账户及权限:drop user 用户名@'%';

drop user 用户名@ localhost;

 

5.  修改密码

mysqladmin -uroot password  密码   ----初始化管理员密码

set password=password("123456");   ----修改自己密码

set password for ' 用户名 '@' 登录地址 '=password(" 密码 ");----修改其他用户密码

6.管理员找回密码

①、关闭数据库服务 service mysqld stop

②、修改主配置文件/etc/my.cnf,在 mysqld  区域中添加记录 skip-grant-table

③、重启服务 service mysqld start

④、登录 mysql  使用命令修改密码

update mysql.user set password=password("123") where user='root';

此时退出数据库,关闭数据库服务 service mysqld stop

主配置文件/etc/my.cnf,在 mysqld  区域中添加记录 skip-grant-table 删除

重启服务 service mysqld start

此时就可以用所修改的密码登录

7.使用数据库: use  mysql (库)--后面不用加“;”

8.增加

create database xx;  创建新数据库

create table 表名 (x1 int(3), name char(20));   ----创建表

insert into 表名 ( x1 ) values ('1'); ------向表中插入数据

create table 表名 (

id int unsigned not null auto_increment,   ---不允许空并自增长

name char(40) not null default ' 未知 ' , ----不空并有默认值

age int not null default '0',     

primary key (id));                  -----主键

insert into  表 1 ( x1 ) select x1 from  表 2; ----将表 2 中的 x1  字段信息插入到表 1 中去

9.删除

drop database 库名 ;    删除数据库

drop table 表名 ;       删除表

delete from 表 where 字段 = 数值 ;  删除表中字段等于数值的记录

10.

update 表名 set 字段 1= 数值 1 where  字段 2= 数值 2;  更新表字段 2 等于数值 2 的所有字段 1 的数值为数值 1

update 表名 set 字段 1= 数值 1 where 字段 2 between 1 and 5; 

更新表字段 2 在 1 到 5 之间的所有字段1 的数值为数值 1 (范围修改)

alter table 表 1 名 rename 表 2 名 ;   将表 1 名称修改为表 2

alter table xinxi modify age int(20); 

将 xinxi 表 age 字段参数修改为 int(20)

alter table xinxi change name username char(40) not null default ' ';

 将 xinxi 表字段名 name 修改为username

alter table xinxi add date year;        将 xinxi 表中添加一个字段

alter table xinxi drop date;            删除 xinxi 表中的 date 字段

alter table xinxi add date year first;  将 xinxi 表中添加到第一个字段

alter table xinxi add date year after age;  将 xinxi 表中添加一个 data 字段添加到 age 之后

4 、查

show databases;  查看数据库

查看数据表首先要先进入数据库use  mysql (库)--后面不用加“;”

show tables;  查看数据表

describe  表名 ;  查看表结构

select * from  mysql.table;    查询某一个库下的一个表

select user,password from user; 查询某一个库下的两个表

select User from user where Host=”%”

5 、授权

    Create(创建) 、 delete 、 drop(删除) 、 select(查看) 、 all(所有权限) 、 grant 、 slave(同步权限)

grant all on *.* to 'zhangsan'@'%';  授权一个已存在的 zhangsan 用户允许在任何地方登陆并给予最大权限

grant all on *.* to 'lisi'@'%' identified by '123';  创建并授权 lisi 用户允许在任何地方登陆给予最大权限并设置密码为 123

show grants for 'zhangsan'@'%'; 查看 zhangsan 用户在远程登陆的权限

revoke create on test.* from 'zhangsan'@'%';  取消 zhangsan 在远程创建使用 test 库的权限

                           

 

 

 

数据库备份

1 、冷备份:离线执行,必须终止读写执行操作

cp scp rsync

2 、软件备份

LV lvsnaps 逻辑快照

Navicat

3 、逻辑备份

① mysqldump

mysqldump :通过 sql  语句的批量操作进行数据库的导入导出

mysqldump 数据库名 > 备份文件名  备份数据库

 例如:mysqldump –uroot –p test > 1.sql

mysql  数据库名 < 备份文件 还原数据库到 test eg:mysql -uroot -p test< 1.sql

mysqldump 数据库名 表 1 > 备份文件名 备份数据库并且之备份表 1

eg:mysqldump –uroot –p test table > 1.sql

还原数据库要现在库中创建库 在还原 mysql –uroot –p test < 1.sql

mysqldump --databases 数据库 1  数据库 2 > 备份文件

将数据库 1 与数据库 2 同时备份到备份文件

eg:mysqldump --databases mysql test -u -p >bf.sql

还原,不用指定数据库:eg:mysql -uroot -p < bf.sql

mysqldump --all-databases > 备份文件 将所有的数据库进行备份

   例如:mysqldump –all-databases –uroot –p > 4.sql

      还原:mysql –uroot –p < 4.sql

② mysqlhotcopy:以文件的方式备份

mysqlhotcopy --flushlog -u='root' -p='123' --regexp=^a /root

通过正则表达式匹配 a 开头数据库进行备份

③ mysqldump  与 mysqlhotcopy  区别

前者是一个 sql  语句的集合,后者是快速文件意义上的备份                       

前者可以使用 MyISAM  和 InnoDB  引擎,后者只适用 MyISAM

前者可以远程操作,后者只支持本地操作

主从数据库

1 、安装服务 -  开启服务

yum -y install mysql mysql-server

service mysqld start

2 、修改配置文件: /etc/my.cnf (主、从都需添加

log-bin=mysql-bin ----开启二进制日志文件

server-id=xx -----申明本台 mysql 服务器 ID

service mysql restart ----修改了配置文件,重新启动

3 、进入数据库(主服务器)

grant replication slave on *.* to ' 用户 '@'%' identified by ' 密码 ';

创建从服务器用户

show master status;  查看二进制文件名,以及大小

4 、进入数据库(从服务器)

Change master to master_host=’主IP’,master_user=’用户’,master_password=’密码’,master_log_file=’主二进制文件’,master_log_pos=文件空间大小;----确定主从服务器同步

5、 show slave status\G; ----查看同步服务开启状态

start slave; ----如果同步状态没有启动,则开启

主主从数据库

1. 主服务器(两台主服务器均配置)

vi /etc/my.cnf ( 添加)

log-bin=mysql-bin

server-id=id 号

service mysqld start

mysqladmin –uroot password 123  ---修改mysql密码

msyql –uroot -p  -----登入数据库

grant replication slave on *.* to ' 用户 '@'%' identified by ' 密码 '; 

------创建从服务器用户

show master status ; ------查看二进制文件名,以及大小

2.从数据库配置

vi /etc/my.cnf ( 添加)

[mysqld_multi]

mysqld=/usr/bin/mysqld_safe

mysqladmin=/usr/bin/mysqladmin

log=/tmp/multi.log

[mysqld 数字 ] ----名字随便,必须数字

port=3306

pid-file=/var/lib/mysqla/mysqld.pid ---定义主服务的id存放位置

datadir=/var/lib/mysqla             ----主服务数据存放位置

socket=/var/lib/mysqla/mysql.sock   ----套接字存放位置

server-id=从服务器id

user=mysql

[mysqld 数字 ] ----名字随便,必须数字

port=3307

pid-file=/var/lib/mysqlb/mysqld.pid

datadir=/var/lib/mysqlb

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

server-id=从服务器id

user=mysql

-----保存退出

mysql_install_db --datadir=/var/lib/mysqla --user=mysql  初始化 mysqla 数据库

mysql_install_db --datadir=/var/lib/mysqlb --user=mysql  初始化 mysqlb 数据库

chown -R mysql /var/lib/mysqla/   ---修改文件权限

chown -R mysql /var/lib/mysqlb/   ----修改文件权限

mysqld_multi --defaults-file=/etc/my.cnf start  主数据库1的id 号(上面手填)

----开启连接数据库主1 ,备份

mysqld_multi --defaults-file=/etc/my.cnf start  主数据库2的id 号(上面手填)

----开启连接数据库主2 ,备份

Netstat –antp | grep :3306 (3307)  ---查看端口是否开启正常

mysql -P 3306 -S /var/lib/mysqla/mysql.sock  登录数据库 01

mysql -P 3307 -S /var/lib/mysqlb/mysql.sock  登录数据库 02

change master to master_host=' 主服务器 IP',master_user=' 用户 ',master_password=' 密码 ',master_log_file=' 二进制文

件 ',master_log_pos= 文件空间大小; ------确定从主服务器同步

show slave status\G; 查看同步服务开启状态

start slave; 如果同步状态没有启动,则开启

exit  离开数据库

主主服务器

1 、安装服务 - 开启服务

yum -y install mysql mysql-server

service mysqld start

2 、保持mysql版本和数据的一致性:由主1(45)服务器拷贝到主2(46)服务器

主 1 (45)服务器:

flush tables with read lock;  ----锁定数据库的写入操作,为只读

mysqldump -u root -p --all-databases > 1.sql 

------备份主 1 数据库,还原到主 2 ,保持两台服务器的一致性

scp  1.sql  root@192.168.11.46:/root

unlock tables ; ----取消锁定

主 2(46) 服务器:

mysql -uroot -p < 1.sql  备份文件

3 、修改配置文件: /etc/my.cnf (两台服务器都需添加)

log-bin=mysql-bin  开启二进制日志文件

server-id=xx 服务器 ID

replicate-do-db=test  需要同步的数据库

binlog-ignore-db=mysql 不需要同步的数据库

binlog-ignore-db=information_schema  不需要同步的数据库

auto-increment-increment=2   为了保证含有自增长的不会冲突

auto-increment-offset=1   自增长起始位 主2(46)服务器改成2

service mysqld restart   修改了配置文件,重新启动

4 、进入主数据库(主服务器,两台服务器均做)

grant replication slave on *.* to ' 用户 '@'%' identified by ' 密码 '; 

-----创建从服务器用户

show master status ;    查看二进制文件名,以及大小

5 、进入从数据库(从服务器,两台服务器均做)

change master to master_host=' 主服务器 IP',master_user=' 用户 ',master_password=' 密码 ',master_log_file=' 二进制文

件 ',master_log_pos= 文件空间大小; -----确定从主服务器同步

show slave status\G;    查看同步服务开启状态

start slave;     如果同步状态没有启动,则开启

mysql读写分离

1.建立两台数据库的主从关系

1安装服务 - 开启服务(主、从安装mysql mysql-server)

yum -y install mysql mysql-server

service mysqld start

2修改配置文件: /etc/my.cnf (主、从都需添加)

log-bin=mysql-bin  开起二进制日志文件

server-id=xx  申明本台 mysql 服务器 ID

service mysqld restart  修改了配置文件,重新启动

3进入数据库(主服务器)

grant all on *.* to 'zhu'@'%' identified by '123'; ---创建从服务器认证用户

show master status ; 查看二进制文件名,以及大小

4进入数据库(从服务器)

change master to master_host=' 主服务器 IP',master_user=' 用户 ',master_password=' 密码 ',master_log_file=' 二进制文

件 ',master_log_pos= 文件空间大小; 确定从主服务器同步

show slave status\G; 查看同步服务开启状态

start slave; 如果同步状态没有启动,则开启

2、配置 amoeba服务器

yum -y install gcc*  mysql

mkdir /amoeba

tar -zxf jdk-7u40-linux-x64.gz -C /amoeba/

vim /etc/profile (添加)

JAVA_HOME=/amoeba/jdk

export JAVA_HOME

PATH=$JAVA_HOME/bin:$PATH

export PATH

export CLASSPATH=.:$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/dt.jar:$CLASSPATH

保存退出

. /etc/profile  刷新全局变量

echo $PATH  或者 java -version  查看是否添加成功

unzip amoeba-mysql-1.3.1-BETA.zip -d /usr/local/amoeba

chmod -R a+x /usr/local/amoeba/bin/

vim /usr/local/amoeba/conf/amoeba.xml ----配置文件

 

Amoeba服务器设置

 

连接amoeba服务器

 

 

配置主从数据库

 

如果需要需要read服务器按照不同的比重配置,

在对应<dbServer name="slave">里面的poolNames中配置

                           MySql数据库

Mysql概论.. 2

Sql命令.. 5

1.连接命令.. 5

2.登录的完整命令.. 5

3.登录服务器数据库地址分三类.. 5

4. 创建和删除用户.. 5

5.  修改密码.. 5

6.管理员找回密码.. 5

7.使用数据库.. 6

8.增加.. 6

9.删除.. 6

10. 改.. 6

4 、查.. 7

5 、授权.. 7

数据库备份.. 7

主从数据库.. 8

1 、安装服务 -  开启服务.. 8

2 、修改配置文件.. 9

3 、进入数据库(主服务器).. 9

4 、进入数据库(从服务器).. 9

主主从数据库.. 9

1. 主服务器.. 9

2.从数据库配置.. 9

主主服务器.. 11

1 、安装服务.. 11

2 、保持mysql版本和数据的一致性.. 11

3 、修改配置文件.. 11

4 、进入主数据库.. 11

5 、进入从数据库.. 11

mysql读写分离.. 12

1.建立两台数据库的主从关系.. 12

2、配置 amoeba服务器.. 12

 

Mysql概论

关系型数据库:MySQL  oracle sqlserver db2  Mariadb(centos7之后默认安装)

非关系型数据库:redis (键值对)

数据库系统相对文件系统优势:

1.数据冗余性和不一致性(数据同步时效性差)

2.数据访问困难 ,数据相对独立,并发访问异常(并发写入会错误,文件并发打开个数有限制,文件格式不同访问困难)

3.完整性和原子性(事物回滚)

4.安全性(分用户限制访问)

数据库(DBMS):指的是以一定的方式存在一起、能为多个用户共享、具有尽可能小的冗余度的特点、是与应用程序彼此独立的数据集合

  1. 数据共享2.减少冗余3.数据集中管理4.数据一致性5.故障恢复

DBMS按照发展可以分为三类:1.层次型(冗余)2.网状型(维护困难)3.关系型

E-R模型:实体、属性、关系

SQL:结构化查询语言,用于,存取,查询,更新,管理关系数据库系统

  1. DML:数据操作语言,操作数据库中数据的命令   select  insert update  delete
  2. DDL:数据库描述语言,建立数据库、定义数据关系     create   drop
  3. DCL:数据库控制语言,控制数据库组件的权限     grant

文件的逻辑关系:   上层:逻辑方式保存的文件  中间层:文件系统(格式化) 

底层:数据块保存的二进制形式存储在硬盘

数据库逻辑关系: 上层:数据表 中间层:存储引擎 底层:逻辑方式保存的文件

存储引擎:存储数据、建立索引以及更新和查询数据等技术的实现方法(将上层数据表翻译到底层,除MySQL有多个存储引擎,其他数据库只有一个)

常用的存储引擎有以下几种:

        1.MyISAM

         MYSQL 默认存储引擎,诞生即存在,插入和查询数据较快。不支持事物、行级锁以及外键约束等功能

         锁:行级锁(InnoDB引擎)、表级锁(MyISAM引擎)、页级锁(DBD 引擎: 相邻的几行锁定)

         约束:域约束(字段的取值范围)、主键约束、外键约束

 

2.InnoDB

         支持事物、行级锁以及外键约束等功能,相对于 MyISAM 更快

3.MEMORY

         运行在内存中、使用 hash 索引,数据存取速度非常快。但是数据不能持久化,适用于缓存

  • 存储管理器:通过  数据描述语言(DDL)来创建表的结构,在通过 数据操作语言(DML) 来保存 SQL 语句产生的数据的数据库组件
    1. 权限及完整性管理器
    2. 事物管理器
    3. 文件管理器
    4. 缓冲区管理器
  • 查询管理器:接收用户的查询请求、理解查询请求、并将请求提交给存储管理器的数据库组件
    1. DDL 和 DML 解释器
    2. 查询执行引擎

Apache Prefork:多子进程,每个子进程有一个线程,一个线程维持一个连接

Worker:多子进程,每个子进程会有多个线程,每个线程维持一个链接

MySQL:    单进程多线程的工作模式,每个线程维持一个连接

守护线程:MySQL 不需要跟用户进行交互

应用线程:MySQL 需要跟用户进行交互

Mysql优化方案:

  1. 垂直扩展(更换硬件,性价比低)2.水平扩展(分布式计算,技术难度大)3.缓存技术4.线程重用5.分区,分表,读写分离
  2. Mysq缺点:SMP 对称多处理器结构(单用户访问只会调用一个CPU)

SQL语句

   安装myql: yum -y install mysql mysql-server

    主配置文件: /etc/my.cnf    端口: 3306

通过 ps  -ef | grep mysql  查看启动mysql 后的启动进程

    /usr/bin/mysqld_safe(启动失败会自动重新加载)

  /usr/libexec/mysql

查看mysql数据目录/var/lib/mysql 中的文件

ibdata1 :数据索引文件

ib_logfiel :事物日志

mysql.sock:套接字文件,包含源地址和目的地址,源端口和目的端口

myql:数据库,里面包括的文件

    *.frm 数据表的格式  *.MYD 数据表的数据内容  *.MYI  数据表的索引文件  

Sql命令:

1.连接命令:mysql 

设置数据库密码 mysqladmin –uroot password  “密码”

         登录:   Mysql –uroot –p

2.登录的完整命令:

mysql -u  用户名 -p  密码 -h  服务器地址 -P  端口 -s 套接字

mysql –uroot –p –P 3306 –h localhost –s /var/lib/mysql/mysql.sock

3.登录服务器数据库地址分三类:

本地(localhost,127.0.0.1,hostname)

远程连接:%

固定ip:192.168.11.46

4. 创建和删除用户:

create user ' 用户名 '@' 登录地址 ' identified by ‘密码’;

删除用户Delete FROM user Where User='test' and Host='localhost';

flush privileges;

删除账户及权限:drop user 用户名@'%';

drop user 用户名@ localhost;

 

5.  修改密码

mysqladmin -uroot password  密码   ----初始化管理员密码

set password=password("123456");   ----修改自己密码

set password for ' 用户名 '@' 登录地址 '=password(" 密码 ");----修改其他用户密码

6.管理员找回密码

①、关闭数据库服务 service mysqld stop

②、修改主配置文件/etc/my.cnf,在 mysqld  区域中添加记录 skip-grant-table

③、重启服务 service mysqld start

④、登录 mysql  使用命令修改密码

update mysql.user set password=password("123") where user='root';

此时退出数据库,关闭数据库服务 service mysqld stop

主配置文件/etc/my.cnf,在 mysqld  区域中添加记录 skip-grant-table 删除

重启服务 service mysqld start

此时就可以用所修改的密码登录

7.使用数据库: use  mysql (库)--后面不用加“;”

8.增加

create database xx;  创建新数据库

create table 表名 (x1 int(3), name char(20));   ----创建表

insert into 表名 ( x1 ) values ('1'); ------向表中插入数据

create table 表名 (

id int unsigned not null auto_increment,   ---不允许空并自增长

name char(40) not null default ' 未知 ' , ----不空并有默认值

age int not null default '0',     

primary key (id));                  -----主键

insert into  表 1 ( x1 ) select x1 from  表 2; ----将表 2 中的 x1  字段信息插入到表 1 中去

9.删除

drop database 库名 ;    删除数据库

drop table 表名 ;       删除表

delete from 表 where 字段 = 数值 ;  删除表中字段等于数值的记录

10. 改

update 表名 set 字段 1= 数值 1 where  字段 2= 数值 2;  更新表字段 2 等于数值 2 的所有字段 1 的数值为数值 1

update 表名 set 字段 1= 数值 1 where 字段 2 between 1 and 5; 

更新表字段 2 在 1 到 5 之间的所有字段1 的数值为数值 1 (范围修改)

alter table 表 1 名 rename 表 2 名 ;   将表 1 名称修改为表 2

alter table xinxi modify age int(20); 

将 xinxi 表 age 字段参数修改为 int(20)

alter table xinxi change name username char(40) not null default ' ';

 将 xinxi 表字段名 name 修改为username

alter table xinxi add date year;        将 xinxi 表中添加一个字段

alter table xinxi drop date;            删除 xinxi 表中的 date 字段

alter table xinxi add date year first;  将 xinxi 表中添加到第一个字段

alter table xinxi add date year after age;  将 xinxi 表中添加一个 data 字段添加到 age 之后

4 、查

show databases;  查看数据库

查看数据表首先要先进入数据库use  mysql (库)--后面不用加“;”

show tables;  查看数据表

describe  表名 ;  查看表结构

select * from  mysql.table;    查询某一个库下的一个表

select user,password from user; 查询某一个库下的两个表

select User from user where Host=”%”

5 、授权

    Create(创建) 、 delete 、 drop(删除) 、 select(查看) 、 all(所有权限) 、 grant 、 slave(同步权限)

grant all on *.* to 'zhangsan'@'%';  授权一个已存在的 zhangsan 用户允许在任何地方登陆并给予最大权限

grant all on *.* to 'lisi'@'%' identified by '123';  创建并授权 lisi 用户允许在任何地方登陆给予最大权限并设置密码为 123

show grants for 'zhangsan'@'%'; 查看 zhangsan 用户在远程登陆的权限

revoke create on test.* from 'zhangsan'@'%';  取消 zhangsan 在远程创建使用 test 库的权限

                           

 

 

 

数据库备份

1 、冷备份:离线执行,必须终止读写执行操作

cp scp rsync

2 、软件备份

LV lvsnaps 逻辑快照

Navicat

3 、逻辑备份

① mysqldump

mysqldump :通过 sql  语句的批量操作进行数据库的导入导出

mysqldump 数据库名 > 备份文件名  备份数据库

 例如:mysqldump –uroot –p test > 1.sql

mysql  数据库名 < 备份文件 还原数据库到 test eg:mysql -uroot -p test< 1.sql

mysqldump 数据库名 表 1 > 备份文件名 备份数据库并且之备份表 1

eg:mysqldump –uroot –p test table > 1.sql

还原数据库要现在库中创建库 在还原 mysql –uroot –p test < 1.sql

mysqldump --databases 数据库 1  数据库 2 > 备份文件

将数据库 1 与数据库 2 同时备份到备份文件

eg:mysqldump --databases mysql test -u -p >bf.sql

还原,不用指定数据库:eg:mysql -uroot -p < bf.sql

mysqldump --all-databases > 备份文件 将所有的数据库进行备份

   例如:mysqldump –all-databases –uroot –p > 4.sql

      还原:mysql –uroot –p < 4.sql

② mysqlhotcopy:以文件的方式备份

mysqlhotcopy --flushlog -u='root' -p='123' --regexp=^a /root

通过正则表达式匹配 a 开头数据库进行备份

③ mysqldump  与 mysqlhotcopy  区别

前者是一个 sql  语句的集合,后者是快速文件意义上的备份                       

前者可以使用 MyISAM  和 InnoDB  引擎,后者只适用 MyISAM

前者可以远程操作,后者只支持本地操作

主从数据库:

1 、安装服务 -  开启服务

yum -y install mysql mysql-server

service mysqld start

2 、修改配置文件: /etc/my.cnf (主、从都需添加

log-bin=mysql-bin ----开启二进制日志文件

server-id=xx -----申明本台 mysql 服务器 ID

service mysql restart ----修改了配置文件,重新启动

3 、进入数据库(主服务器)

grant replication slave on *.* to ' 用户 '@'%' identified by ' 密码 ';

创建从服务器用户

show master status;  查看二进制文件名,以及大小

4 、进入数据库(从服务器)

Change master to master_host=’主IP’,master_user=’用户’,master_password=’密码’,master_log_file=’主二进制文件’,master_log_pos=文件空间大小;----确定主从服务器同步

5、 show slave status\G; ----查看同步服务开启状态

start slave; ----如果同步状态没有启动,则开启

主主从数据库

1. 主服务器(两台主服务器均配置)

vi /etc/my.cnf ( 添加)

log-bin=mysql-bin

server-id=id 号

service mysqld start

mysqladmin –uroot password 123  ---修改mysql密码

msyql –uroot -p  -----登入数据库

grant replication slave on *.* to ' 用户 '@'%' identified by ' 密码 '; 

------创建从服务器用户

show master status ; ------查看二进制文件名,以及大小

2.从数据库配置

vi /etc/my.cnf ( 添加)

[mysqld_multi]

mysqld=/usr/bin/mysqld_safe

mysqladmin=/usr/bin/mysqladmin

log=/tmp/multi.log

[mysqld 数字 ] ----名字随便,必须数字

port=3306

pid-file=/var/lib/mysqla/mysqld.pid ---定义主服务的id存放位置

datadir=/var/lib/mysqla             ----主服务数据存放位置

socket=/var/lib/mysqla/mysql.sock   ----套接字存放位置

server-id=从服务器id

user=mysql

[mysqld 数字 ] ----名字随便,必须数字

port=3307

pid-file=/var/lib/mysqlb/mysqld.pid

datadir=/var/lib/mysqlb

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

server-id=从服务器id

user=mysql

-----保存退出

mysql_install_db --datadir=/var/lib/mysqla --user=mysql  初始化 mysqla 数据库

mysql_install_db --datadir=/var/lib/mysqlb --user=mysql  初始化 mysqlb 数据库

chown -R mysql /var/lib/mysqla/   ---修改文件权限

chown -R mysql /var/lib/mysqlb/   ----修改文件权限

mysqld_multi --defaults-file=/etc/my.cnf start  主数据库1的id 号(上面手填)

----开启连接数据库主1 ,备份

mysqld_multi --defaults-file=/etc/my.cnf start  主数据库2的id 号(上面手填)

----开启连接数据库主2 ,备份

Netstat –antp | grep :3306 (3307)  ---查看端口是否开启正常

mysql -P 3306 -S /var/lib/mysqla/mysql.sock  登录数据库 01

mysql -P 3307 -S /var/lib/mysqlb/mysql.sock  登录数据库 02

change master to master_host=' 主服务器 IP',master_user=' 用户 ',master_password=' 密码 ',master_log_file=' 二进制文

件 ',master_log_pos= 文件空间大小; ------确定从主服务器同步

show slave status\G; 查看同步服务开启状态

start slave; 如果同步状态没有启动,则开启

exit  离开数据库

主主服务器

1 、安装服务 - 开启服务

yum -y install mysql mysql-server

service mysqld start

2 、保持mysql版本和数据的一致性:由主1(45)服务器拷贝到主2(46)服务器

主 1 (45)服务器:

flush tables with read lock;  ----锁定数据库的写入操作,为只读

mysqldump -u root -p --all-databases > 1.sql 

------备份主 1 数据库,还原到主 2 ,保持两台服务器的一致性

scp  1.sql  root@192.168.11.46:/root

unlock tables ; ----取消锁定

主 2(46) 服务器:

mysql -uroot -p < 1.sql  备份文件

3 、修改配置文件: /etc/my.cnf (两台服务器都需添加)

log-bin=mysql-bin  开启二进制日志文件

server-id=xx 服务器 ID

replicate-do-db=test  需要同步的数据库

binlog-ignore-db=mysql 不需要同步的数据库

binlog-ignore-db=information_schema  不需要同步的数据库

auto-increment-increment=2   为了保证含有自增长的不会冲突

auto-increment-offset=1   自增长起始位 主2(46)服务器改成2

service mysqld restart   修改了配置文件,重新启动

4 、进入主数据库(主服务器,两台服务器均做)

grant replication slave on *.* to ' 用户 '@'%' identified by ' 密码 '; 

-----创建从服务器用户

show master status ;    查看二进制文件名,以及大小

5 、进入从数据库(从服务器,两台服务器均做)

change master to master_host=' 主服务器 IP',master_user=' 用户 ',master_password=' 密码 ',master_log_file=' 二进制文

件 ',master_log_pos= 文件空间大小; -----确定从主服务器同步

show slave status\G;    查看同步服务开启状态

start slave;     如果同步状态没有启动,则开启

mysql读写分离

1.建立两台数据库的主从关系

1安装服务 - 开启服务(主、从安装mysql mysql-server)

yum -y install mysql mysql-server

service mysqld start

2修改配置文件: /etc/my.cnf (主、从都需添加)

log-bin=mysql-bin  开起二进制日志文件

server-id=xx  申明本台 mysql 服务器 ID

service mysqld restart  修改了配置文件,重新启动

3进入数据库(主服务器)

grant all on *.* to 'zhu'@'%' identified by '123'; ---创建从服务器认证用户

show master status ; 查看二进制文件名,以及大小

4进入数据库(从服务器)

change master to master_host=' 主服务器 IP',master_user=' 用户 ',master_password=' 密码 ',master_log_file=' 二进制文

件 ',master_log_pos= 文件空间大小; 确定从主服务器同步

show slave status\G; 查看同步服务开启状态

start slave; 如果同步状态没有启动,则开启

2、配置 amoeba服务器

yum -y install gcc*  mysql

mkdir /amoeba

tar -zxf jdk-7u40-linux-x64.gz -C /amoeba/

vim /etc/profile (添加)

JAVA_HOME=/amoeba/jdk

export JAVA_HOME

PATH=$JAVA_HOME/bin:$PATH

export PATH

export CLASSPATH=.:$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/dt.jar:$CLASSPATH

保存退出

. /etc/profile  刷新全局变量

echo $PATH  或者 java -version  查看是否添加成功

unzip amoeba-mysql-1.3.1-BETA.zip -d /usr/local/amoeba

chmod -R a+x /usr/local/amoeba/bin/

vim /usr/local/amoeba/conf/amoeba.xml ----配置文件

 

Amoeba服务器设置

 

连接amoeba服务器

 

 

配置主从数据库

 

如果需要需要read服务器按照不同的比重配置,

在对应<dbServer name="slave">里面的poolNames中配置

 

 

 

 cd /usr/local/amoeba/bin/

vim amoeba

#DEFAULT_OPTS="-server -Xms256m -Xmx256m -Xss128k"

DEFAULT_OPTS="-server -Xms256m -Xmx256m -Xss256k"

nohup bash -x /usr/local/amoeba/bin/amoeba & 启动命令

ps aux | grep amoeba 如下图则正确

访问并测试amoeba服务器:

mysql -u root -p  -h  amoeba服务器ip   -P  8066(端口)

 

 

 

 cd /usr/local/amoeba/bin/

vim amoeba

#DEFAULT_OPTS="-server -Xms256m -Xmx256m -Xss128k"

DEFAULT_OPTS="-server -Xms256m -Xmx256m -Xss256k"

nohup bash -x /usr/local/amoeba/bin/amoeba & 启动命令

ps aux | grep amoeba 如下图则正确

访问并测试amoeba服务器:

mysql -u root -p  -h  amoeba服务器ip   -P  8066(端口)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值