linux的操作和配置 (centos 6.7)

linux操作命令:

1、查看端口号:netstat -tunpl | grep :3306
2、查看服务是否启动:pstree | grep mysql
3、查看开机启动:cat /etc/rc.local(/usr/local/mysql/bin/mysql_safe –user=mysql &)
4、查看是否安装了软件:rpm -qa | grep mysql
5、yum查看所有要安装的软件版本:yum list | grep mysql
6、yum安装mysql: yum install -y mysql-server mysql mysql-devel 命令将mysql mysql-server mysql-devel都安装好(注意:安装mysql时我们并不是安装了mysql客户端就相当于安装好了mysql数据库了,我们还需要安装mysql-server服务端才行)
7、查看安装好的mysql-server版本:rpm -qi mysql-server
8、chkconfig –list | grep mysqld 命令来查看mysql服务是不是开机自动启动
9、chkconfig mysqld on 命令来将其设置成开机启动
10、/usr/bin/mysqladmin -u root password ‘new-password’  // 为root账号设置密码
11、/var/lib/mysql mysql数据库的数据库文件存放位置
12、netstat -anp 命令来查看一下,Linux系统是否在监听 3306 这个端口号
13、select user,host from mysql.user; 查看用户授权信息
14、为远程服务器授权允许登录到本服务器的mysql中(授予所有权限)
grant all on . to user1@192.168.225.129 identified by ‘123’;
15、远程主机不能访问授权过的主机,大多都是centos防火墙设置的原因,在/etc/sysconfig/iptables添加-A INPUT -m state –state NEW -m tcp -p tcp –dport 3306 -j ACCEPT后,重新启动iptables(service iptables restart)解决问题

16、mysql中\s命令表示查看mysql的状态,字符编码等

17、查看mysql中的字符编码,并修改
show variables like ‘character_set_%’;
然后使用set character_set_server=utf8;

mysql主从复制

1.当主服务器出现问题,可以快速切换到从服务器提供服务
2.可以在从服务器上执行查询操作,降低主服务器的访问压力(前提是对数据实时更新不是太苛刻的;银行系统就不行,查询也是在主服务器上)
3.可以在从服务器上执行备份,以避免备份期间影响主服务器的服务

主服务器配置

1,对从服务器进行grant授权
2,修改主服务器的配置文件my.cnf,开启binlog日志,并设置server-id的值
log-bin =mysql-bin
server-id=1(主从的 唯一性)
3,在主服务器上设置读锁定有效,确保没有数据库操作,以便获得一个一致性的快照(这个选做,涉及加读锁和解锁,我们可以使用msyqldump -l -F就可以更好的完成,建议使用mysqldump备份
mysql>flush tables with read lock;
加读锁后,主服务器已经停止了更新操作,生成主数据库备份,备份有2种
(1)cp全部数据(前提是主数据库服务器可以停止,那么直接cp数据文件应该是最快的生成快照的方法)
(2)mysqldump(推荐使用)
4,快照备份完成后,主服务器可以恢复写操作(前提是使用了读锁,mysqldump就不需要,会自动解锁),剩下的操作只需要在从服务器上去执行
mysql>unlock tables;
5,把主数据库的一致性备份恢复到从数据库上,把以上的压缩包解压到相应的目录即可
把主数据库备份文件拷贝到从数据库中,用到scp(隧道传输数据)
scp /root/test.sql 192.168.225.129:/root/

从服务器数据库配置

1,配置从数据库的配置文件/etc/my.cnf
server-id=2
log-bin=mysql-bin
master-host=192.168.225.128
master-user=user1
master-password=123
master-port=3306
2,重新启动mysql,关闭有2种方法:
先查看mysql的服务:ps -ef | grep mysqld
1,pkill mysqld(关闭mysql)
2,kill -9 pid号(关闭mysql)
启动mysql
/usr/bin/mysqld_safe –user=mysql &
这里写图片描述
3,重启mysql后,进入mysql后
执行show slave status\G(\G表示把行列倒置,便于查看)
这里写图片描述
最主要的二行:slave_IO_Running:yes
slave_SQL_Running:yes
说明主从数据库配置成功了。

我们在主数据库上操作,insert into 操作
这里写图片描述
从数据库查看
这里写图片描述
但是从服务器一般是作为查询服务,不要在从服务器不使用grant授权的用户操作从数据库的数据,这样会导致数据不一致。

msyql主从数据库复制会出现的问题

这里写图片描述
这里写图片描述
这里写图片描述

mysql的分区分表

目前,针对海量数据的优化主要2种方法:分区分表和sql语句的优化
sql语句的优化:可以通过增加索引等来调整,但是数据量的增大将会导致索引的维护代价增大,所有要使用分区技术,表名不变,可以把数据分散到多个服务器中

分区技术的
range分区:基于属于一个给定连续区间的列值,把多行分配给分区
适合与日期类型,支持复合分区
list分区:适合与有固定取值的列,支持复合分区
hash分区:线性hash使得增加,删除和合并分区更快捷
key分区:列可以为字符型等其他非int类型
这里写图片描述

查看mysql的默认引擎:show engines;
默认是myISAM
查看mysql插件是否支持分区:show plugins;
这里写图片描述
partition 说明支持分区
创建大小为5的分区表
create table t1(id int)engine=myisam partition by hash(id) partitions 5;

t1表建立索引
create index in_id on t1(id);

查看数据库文件目录下的表结构,共有12张t1表(索引和数据)
这里写图片描述

使用分区表t1创建一个有1000万行的表

但是要注意t1表中不能有primary key主键约束
删除表的主键约束
alter table t1 drop primary key;

利用不断的执行insert into t1 select * from t1;(可以把select * from t1的数据做为数据插入到t1中,这样执行一次递增一倍)

我们可以在另一终端中监控一下,在插入1000万行数据的时候,分区表t1的数据增长情况:使用watch -n1 ls -lh
可以看到数据均匀的分布t1的10张表中,而且索引占用的空间要是数据的2-3倍

监控数据增长的时候,我们可以看一下内存的使用情况命令 :free

如果引擎是innodb,因为innodb引擎默认的是把所有数据和索引都存在共享表空间ibdata1,所有在进行分区表的时候是无法实现的;但是可以把innodb设置成独立存储表数据和表索引(/etc/my.cnf中 innodb_file_per_table=1)这样就可以独立存储了

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值