linux mysql操作
mysql(contox7)
解压安装包:tar -xvf mysql-5.7.28-1.el7.x86_64.rpm-bundle.tar
检查环境是否有:rpm -qa|grep mariadb
移除mariadb:rpm -e mariadb-libs-5.5.56-2.el7.x86_64 --nodeps
安装数据库rpm:
1.安装common:rpm -ivh mysql-community-common-5.7.28-1.el7.x86_64.rpm
2.安装libs:rpm -ivh mysql-community-libs-5.7.28-1.el7.x86_64.rpm
3.安装libs-compat:rpm -ivh mysql-community-libs-compat-5.7.28-1.el7.x86_64.rpm
4.安装客户端client:rpm -ivh mysql-community-client-5.7.28-1.el7.x86_64.rpm
5.安装服务端server:rpm -ivh mysql-community-server-5.7.28-1.el7.x86_64.rpm
6.安装工具devel:rpm -ivh mysql-community-devel-5.7.28-1.el7.x86_64.rpm
注:server安装不了,安装依赖包
yum search perl
yum -y install perl.x86_64
yum search libaio
yum -y install libaio.x86_64
yum search net-tools
yum -y install net-tools.x86_64
初始化mysql: mysqld --initialize --user=mysql
初始密码:cat /var/log/mysqld.log C=gjS33sNiwa
系统启动时启动服务:systemctl start mysqld.service
查看是否启动成功: systemctl status mysqld.service
修复密码:set password=password('root');
关闭防火墙:
关闭:systemctl stop iptables(如果报错需下载:yum install -y iptables-services iptables-devel.x86_64 iptables.x86_64)
关闭防火墙: systemctl stop firewalld
启动系统时关闭:systemctl disable firewalld.service
master:
编辑vi /etc/my.cnf:
#开启binlog功能并指定log文件为mysql-bin log_bin=mysql-bin #设置serverid server-id=1 #与磁盘同步 sync-binlog=1 #指定不同步的库 binlog-ignore-db=performance_schema binlog-ignore-db=information_schema binlog-ignore-db=sys #指定同步的库 #binlog-do-db=lagou
重启服务:systemctl restart mysqld;
赋权限:
grant replication slave on *.* to 'root'@'%' identified by 'root';
grant all privileges on *.* to 'root'@'%' identified by 'root';
grant all on *.* to 'root'@'%';(赋权root所有访问链接最大权限,上面不生效用这个)
flush privileges;(刷新权限)
show master status;(查看状态)
追加从库将数据备份一份:
安装mysql的目录下:mysqldump --all-databases > mysql_backup_all.sql -uroot -p(全量备份)
半同步复制:
是否支持动态安装插件:select @@have_dynamic_loading;
安装半同步的插件并命名为“semisync_master.so”:install plugin rpl_semi_sync_master soname 'semisync_master.so';
查看参数:show variables like '%semi%';
开启半同步复制:set global rpl_semi_sync_master_enabled=1;
半同步复制时间延迟:set global rpl_semi_sync_master_timeout=1000;
并行复制:
查看并行复制的参数:show variables like '%binlog_group%';
并行复制时间延迟:set global binlog_group_commit_sync_delay=1000;
并行复制每组的事务数:set global binlog_group_commit_sync_no_delay_count=100;
slave:
编辑vi /etc/my.cnf:
#与maser不一样就行
server-id=2
#指定relay_log的文件为mysql-relay-log relay_log=mysql-relay-log
#该库只读 read_only=1
重启服务:systemctl restart mysqld;
mysql:
show slave status;(提前查看状态)
change master to master_host='ip',master_port=端口,master_user='root',master_password='root',master_log_file='mysql-bin.000002',master_log_pos=589;(指定从mater复制)
start slave;(开启slave )
半同步复制:
是否支持动态安装插件:select @@have_dynamic_loading;
安装半同步的插件并命名为“semisync_slave.so”:install plugin rpl_semi_sync_slave soname 'semisync_slave.so';
查看参数:show variables like '%semi%';
开启半同步复制: set global rpl_semi_sync_slave_enabled=1;
重新加载:stop slave;
start slave;
并行复制:
查看并行复制的参数:show variables like '%slave_parallel%';
show variables like '%relay_log%';
并行复制提交方式为组提交:(需要提前停止slave:stop slave;)set global slave_parallel_type='LOGICAL_CLOCK';
并行复制的线程数:set global slave_parallel_workers =8;
set global relay_log_info_repository='TABLE';
set global master_info_repository='TABLE';
vi /etc/my.cnf:(将以上信息配置在配置文件中)
slave_parallel_type=LOGICAL_CLOCK
slave_parallel_workers =8
relay_log_info_repository=TABLE
master_info_repository=TABLE
relay_log_recovery=1
mysql-proxy安装:
解压安装包:tar -xzvf mysql-proxy-0.8.5-linux-el6-x86-64bit.tar.gz
创建一个读写文件:vim /etc/mysql-proxy.cnf
[mysql-proxy]
#当前运行proxy的用户 user=root #指定主从mysql的账号及密码 admin-username=root admin-password=root #指定代理的地址 proxy-address=192.168.126.118:4040 #主库信息 proxy-backend-addresses=192.168.126.120:3306 #从库信息(读)多个逗号隔开 proxy-read-only-backend-addresses=192.168.126.119:3306 #采用lua脚本分发信息 proxy-lua-script=/root/proxy/mysql-proxy-0.8.5-linux-el6-x86-64bit/share/doc/mysql-proxy/rw-splitting.lua #日志文件 log-file=/var/log/mysql-proxy.log #日志级别 log-level=debug #指定proxy的进程是守护进程的方式 daemon=true #proxy宕机时试图重启 keepalive=true
权限修改为可读写:chmod 660 /etc/mysql-proxy.cnf
打开指定的脚本:vi mysql-proxy-0.8.5-linux-el6-x86-64bit/share/doc/mysql-proxy/rw-splitting.lua
达到最小的连接数时才进行读写分离的生效
修改:min_idle_connections = 1
启动proxy服务:
cd mysql-proxy-0.8.5-linux-el6-x86-64bit/bin/
./mysql-proxy --defaults-file=/etc/mysql-proxy.cnf
(在当前目录找mysql-proxy)(指明用那个配置文件启动)
双主模式
vi /etc/my.cnf
#开启binlog功能并指定log文件为mysql-bin log_bin=mysql-bin #设置serverid (另一个主不同) server-id=1 #与磁盘同步 sync-binlog=1 #指定不同步的库 binlog-ignore-db=performance_schema binlog-ignore-db=information_schema binlog-ignore-db=sys
#开启relay_log relay_log=mysql-relay-bin #开启更新日志写到二进制文件中(binlog) log_slave_updates=1 #开启主键递增从什么位置开始(双主单写可以不配置) (另一个主从2开始) auto_increment_offset=1 #递增步长2 auto_increment_increment=2
mha搭建
所有服务器都要下载
yum install -y perl-DBD-MySQL
perl-Config-Tiny
perl-Log-Dispatch
perl-ParalExtUtils-CBuilder
perl-ExtUtils-MakeMaker
perl-CPAN
服务器互通
ssh-keygen -t rsa (生成默认秘钥一直回车) ssh-copy-id mdaip (将秘钥复制到mda服务器) cat /root/.ssh/authorized_keys (r服务器上检查下,看看.ssh/authorized_keys文件是否包含3个公钥) cat /root/.ssh/id_rsa.pub >> /root/.ssh/authorized_keys(将MHA Manager的公钥添加到authorized_keys文件中(此时应该包含4个公钥)) scp /root/.ssh/authorized_keys root@192.168.31.199:/root/.ssh/authorized_keys
scp /root/.ssh/authorized_keys root@192.168.31.165:/root/.ssh/authorized_keys
scp /root/.ssh/authorized_keys root@192.168.31.142:/root/.ssh/authorized_keys ssh 192.168.31.199(master) exit ssh 192.168.31.165 (slave1) exit ssh 192.168.31.142 (slave2) exit
node
tar -xvf mha4mysql-manager-0.58.tar.gz cd mha4mysql-manager-0.58 perl Makefile.PL make && make install
manage
tar -xvf mha4mysql-manager-0.58.tar.gz cd mha4mysql-manager-0.58 perl Makefile.PL make && make install
MongoDB安装:
解压包:tar -xvf mongodb-linux-x86_64-rhel70-4.2.19.tgz
进入文件:cd mongodb-linux-x86_64-rhel70-4.2.19
创建配置文件:vi mongo.conf
创建数据库目录:mkdir -p /data/mongo
#指定数据库目录 dbpath=/data/mongo/ #监听端口,默认27017 port=27017 #监听IP地址,默认全部可以访问 bind_ip=0.0.0.0 #是否在后台启动 fork=true #日志路径 logpath=/data/mongo/MongoDB.log
#是否追加日志
logappend=true #是否开启安全认证 auth=false
启动:./bin/mongod -f mongo.conf
查看启动的进程:ps -ef|grep mongo
停止服务:kill -9 ##
连接mongodb:./bin/mongo --host=ip --port=端口