linux安装+使用总结篇(*****)
1、快速更改国内yum源 mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup #<<-备份系统自带yum源 wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-6.repo <<—国内使用阿里云yum源速度比较快 wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-6.repo yum makecache 2、安装必要的软件工具 yum install lrzsz systat tree vim nmap unzip dos2unix nc lsof yum groupinstall "Development Tools" yum groupinsll "x software development" 3、清理开机自启动服务 1 2 chkconfig|egrep -v "crond|sshd|network|rsyslog|sysstat"|awk '{print "chkconfig",$1,"off"}'|bash <<-关闭服务 chkconfig --list|grep 3:on <<-检查开机启动的服务 4、更改ssh登录配置 Port 52113 #端口 PermitRootLogin no #禁止root登录 PermitEmptyPasswords no #禁止空密码登录 UseDNS no #不适用dns,对远程主机进行反向解析,会减慢ssh连接速度 ListenAddress #监听指定的IP地址 5、将需要的普通用户加入到sudo权限里 [root@model ~]# visudo #等于 vim /etc/sudoers 两者修改的是同一个文件 ## Allow root to run any commands anywhere root ALL=(ALL) ALL zxin10 ALL=(ALL) ALL 6、解决普通用户命令找不到的问题 普通用户与root环境变量一致 #修改各个用户的 echo "export PATH=$PATH:/usr/sbin/:" >> ~/.bash_profile source ~/.bash_profile 得生效 7、配置字符集 linux中文显示设置 GBK用2个字节表示一个中文,UTF-8用3个字节表示一个中文 使用secureCRT可以设置编码格式,必须和系统设置的一样 Option--Session Option--Appearance 选项--会话选项--外观-- 字符编码 修改系统: cp /etc/sysconfig/i18n /etc/sysconfig/i18n.ori echo 'LANG="zh_CN.UTF-8"' >/etc/sysconfig/i18n source /etc/sysconfig/i18n echo $LANG 8、同步系统时间 yum -y install ntpdate which ntpdate ------> /usr/sbin/ntpdate #ntpdate命令的全路径输出 加入到定时任务里面去: echo '#time sync by mmod at 2015-2-1' >>/var/spool/cron/root echo '*/5 * * * * /usr/sbin/ntpdate time.nist.gov >/dev/null 2>&1' >>/var/spool/cron/root crontab -l 9、关闭SElinux,iptables,NetworkManager sed -i 's/SELINUX=enforcing/SELINUX=disabled' /etc/selinux/conf # 直接修改读取内容而不输出到终端 reboot 10、五个企业环境中开机自启动的服务; sshd:远程连接linux服务器必须开启 rsyslog:日志相关软件 network:网络服务 crond:系统和用户配置的计划任务周期性进行 sysstat:收集系统性能数据,有利于判断系统是否正常 设置开机自启动服务的常见方法 方法一:ntsysv 方法二:setup 方法三: chkconfig|egrep -v "crond|sshd|network|rsyslog|sysstat"|awk '{print "chkconfig",$1,"off"}'|bash 11、加大服务器文件描述符 #查看limit [root@model ~]# ulimit -n 1024 #修改配置文件 echo '* - nofile 65535' >/etc/security/limits.conf #加入开机自启动该命令: echo "ulimit -HSn 65535" >> /etc/rc.local echo "fs.file-max = 100000" >>/etc/sysctl.conf 12、修改内核参数 两种修改内核参数方法: 12.1、使用echo value方式直接追加到文件里如echo "1" >/proc/sys/net/ipv4/tcp_syn_retries,但这种方法设备重启后又会恢复为默认值 12.2、把参数添加到/etc/sysctl.conf中,然后执行sysctl -p使参数生效,永久生效,老男孩推荐参数: net.ipv4.tcp_syn_retries = 1 net.ipv4.tcp_synack_retries = 1 net.ipv4.tcp_keepalive_time = 600 net.ipv4.tcp_keepalive_probes = 3 net.ipv4.tcp_keepalive_intvl =15 net.ipv4.tcp_retries2 = 5 net.ipv4.tcp_fin_timeout = 2 net.ipv4.tcp_max_tw_buckets = 36000 net.ipv4.tcp_tw_recycle = 1 net.ipv4.tcp_tw_reuse = 1 net.ipv4.tcp_max_orphans = 32768 net.ipv4.tcp_syncookies = 1 net.ipv4.tcp_max_syn_backlog = 16384 net.ipv4.tcp_wmem = 8192 131072 16777216 net.ipv4.tcp_rmem = 32768 131072 16777216 net.ipv4.tcp_mem = 786432 1048576 1572864 net.ipv4.ip_local_port_range = 1024 65000 net.ipv4.ip_conntrack_max = 65536 net.ipv4.netfilter.ip_conntrack_max=65536 net.ipv4.netfilter.ip_conntrack_tcp_timeout_established=180 net.core.somaxconn = 16384 net.core.netdev_max_backlog = 16384 sysctl -p 选配部分: ----------------------------------------------------------------------------------- 1、定时清理邮件服务临时目录垃圾文件 •Centos 5 find /var/spool/clientmqueue/ -type f |xargs rm -f •Centos 6 find /var/spool/postfix/maildrop -type f |xargs rm -f #df -i 查看磁盘inode的总量、使用量、剩余量 2、锁定关键系统文件,防止被提权篡改 chattr +i /etc/passwd /etc/shadow /etc/group /etc/gshadow /etc/inittab 使用lsattr 进行查看,chattr -i进行解锁 禁止linux系统被ping 3、为了增加系统的安全性。可以禁止我们的linux系统被ping,可惜修改iptables来设置 echo 'net.ipv4.icmp_echo_ignore_all=1' >> /etc/sysctl.conf sysctl -p 重载信息并更新启动 如果要恢复: > /etc/sysctl.conf echo 0 > /proc/sys/net/ipv4/icmp_echo_ignore_all 4、隐藏系统版本还版本号 vim /etc/issue修改文件 >/etc/issue 清空 echo "">/etc/redhat.release 5、升级软件安装漏洞 yum install openssl openssh bash -y 配置实例: centos7系统安装完成后一些基本的优化 一:主机名和hosts文件 centos7有一个新的修改主机名的命令hostnamectl # hostnamectl set-hostname --static li.cluster.com # vim /etc/hosts --最后加上你的IP与主机名的绑定 127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4 ::1 localhost localhost.localdomain localhost6 localhost6.localdomain6 172.16.13.250 li.cluster.com li 二:关闭iptables # systemctl status firewalld.service --查看firewalld服务的状态,active是启动状态,inactive是关闭状态 # systemctl stop firewalld.service --关闭此服务 # systemctl list-unit-files |grep firewalld --查看firewalld是否开机自动启动 firewalld.service enabled # systemctl disable firewalld.service --类似以前的chkconfig xxx off # systemctl list-unit-files |grep firewalld firewalld.service disabled 三:关闭selinux # sed -i 7s/enforcing/disabled/ /etc/selinux/config --改完后,在后面重启系统生效 四:网络配置 # systemctl stop NetworkManager --停止服务 # systemctl status NetworkManager --查看状态,确认为关闭了 # systemctl disable NetworkManager --设置为开机不自动启动 # vim /etc/sysconfig/network-scripts/ifcfg-enp2s0 --网卡名如果不一样,找到对应的文件就行 BOOTPROTO="static" NAME="enp2s0" DEVICE="enp2s0" ONBOOT="yes" IPADDR=172.16.13.X NETMASK=255.255.255.0 GATEWAY=172.16.13.254 DNS1=114.114.114.114 # /etc/init.d/network restart --network服务这里默认还是可以使用原来的管理方法 # chkconfig network on 五:yum配置 # cd /etc/yum.repos.d/ # wget http://mirrors.163.com/.help/CentOS7-Base-163.repo 配置可选epel源 # wget http://dl.fedoraproject.org/pub/epel/7/x86_64/e/epel-release-7-10.noarch.rpm --此版本信息会随时间推移而变化 # rpm -ivh epel-release-7-10.noarch.rpm # yum clean all # yum makecache fast 六:输入法配置 默认只有拼音中文输入法,需要使用极点五笔输入法,安装过程如下: # yum install ibus ibus-table-chinese-wubi-jidian 安装完后,需要右上角把用户注销重登录 左上角applications--system tools -- settions -- Region & Language -- +或-你的输入法就可以了 加完之后,使用super+space键进行切换 七:时间同步 # yum install ntp ntpdate --安装ntp时间同步相关软件包 # vim /etc/ntp.conf --确认配置文件里有下列的时间同步源 server 0.rhel.pool.ntp.org iburst server 1.rhel.pool.ntp.org iburst server 2.rhel.pool.ntp.org iburst server 3.rhel.pool.ntp.org iburst # systemctl enable ntpd --设置开机自动启动ntpd # systemctl start ntpd --立即启动ntpd服务 # date --确认时间与现在时间一致 # ntpdate 0.rhel.pool.ntp.org --如果还没有同步成功,你可以用此命令手动同步一下 八:有些命令的参数可以自动补全,如果不能补全,则安装下面的命令(可能需要注销一下) # yum install bash-completion 九:vnc的配置 # vncpasswd --设定vcn连接的密码 Password: Verify: # x0vncserver --PasswordFile=/root/.vnc/passwd --AlwaysShared=on --AcceptKeyEvents=off AcceptPointerEvents=off &> /dev/null & 十:桌面锁屏 左上角applications--system tools -- settions -- Privacy 设置是否自动锁屏 手动锁屏 super+l 十一:图形界面快捷键修改 左上角applications--system tools -- settions -- Keyboard -- Shortcuts 去修改自己习惯的快捷键 十二:设置默认启动级别为图形模式(相当于以前的5级别) # systemctl get-default --查看当前的运行模式 # systemctl set-default graphical.target --设置图形模式为默认模式 ulimit(选项) 选项 复制代码 -a:显示目前资源限制的设定; -c <core文件上限>:设定core文件的最大值,单位为区块; -d <数据节区大小>:程序数据节区的最大值,单位为KB; -f <文件大小>:shell所能建立的最大文件,单位为区块; -H:设定资源的硬性限制,也就是管理员所设下的限制; -m <内存大小>:指定可使用内存的上限,单位为KB; -n <文件数目>:指定同一时间最多可开启的文件数; -p <缓冲区大小>:指定管道缓冲区的大小,单位512字节; -s <堆叠大小>:指定堆叠的上限,单位为KB; -S:设定资源的弹性限制; -t <CPU时间>:指定CPU使用时间的上限,单位为秒; -u <程序数目>:用户最多可开启的程序数目; -v <虚拟内存大小>:指定可使用的虚拟内存上限,单位为KB。 复制代码 在我的centos 6.3 32位系统输入 ulimit -a 结果如下 ulimit -n 问题: Can’t open so many files 对于linux运维的同学们,相信都遇到过这个问题。 在Linux下一切资源皆文件,普通文件是文件,磁盘打印机是文件,socket 当然也是文件。系统默认设置成1024,但是这个数字对于服务器特别是大并发的远远是不够的,所以,我们需要结合实际情况修改成一个更大更合理的值。 修改方法 vim /etc/security/limits.conf 1 2 3 # 确认包含下面的内容: * soft nofile 65536 * hard nofile 65536 保存,然后重启 注:65536 是我这边的设定值,读者也可以自行设置一个合适的值,* 代表针对所有用户 同时还有个要注意的值 file-max 是设置 系统所有进程一共可以打开的文件数量 ,可以通过如下方法进行修改 echo 100000 > /proc/sys/fs/file-max 或修改 /etc/sysctl.conf, 加入 fs.file-max = 100000 重启生效 另外还有一个,/proc/sys/fs/file-nr,可以看到整个系统目前使用的文件句柄数量 ulimit -u 比如我们在模拟大规模http并发测试的时候,客户端会报一个无法fork new proc异常,原因是受到了最大进程1024的限制 解除 Linux 系统的最大进程数 方法如下 vim /etc/security/limits.d/90-nproc.conf 1 2 3 # 添加如下的行 * soft nproc 10240 root soft nproc unlimited
Linux之基础命令 常用命令 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 查看ip地址的两种方式 ifconfig ip addr show Linux的两种ip地址: 127.0.0.1 本机回环地址 0.0.0.0 全网地址/绑定所有网卡/所有地址 Linux远程连接,连接本地虚拟机服务器 windows默认没有ssh命令,可以通过安装xshell 获取ssh命令 ssh 用户名@服务器ip Linux的目录分割符 / windows的目录分割符 \ 超级用户的家目录 /root 普通用户的家目录 /home 超级用户的命令提示符[root@bogon ~]# 普通用户的命令提示符[root@bogon ~]$ 文件的增删改查 复制代码 增 创建文件夹 mkdir 文件名 创建文本文件 touch text.txt touch .text.txt # 创建隐藏文件 递归创建文件夹 mkdir -p ./20期/{demo1,demo2,demo3} 【在当前目录下创建一个文件夹名为20期,在20期里创建了这三个子文件夹】 复制代码 复制代码 删 删除文本文件 rm text.txt rm -r 文件名 -r 【递归删除文件和文件夹】 -f 【强制删除不提示】 #上面两种删除文件的方式都会又询问你是否要删除 rm -rf 文件名 # 强制删除不提示(慎用) 复制代码 改 修改文件名 mv 旧文件名 新文件名 # 文件和文本一样 移动文件 mv 你想移动的文件 你要移动到的目录 复制代码 查 ls 【查看当前目录下的所有文件】 ls -l 【查看当前目录详细信息(权限)】 ls -l /tmp 【查看指定文件下的文件信息】 ls -lh 【查看文件大小显示M/G】 ls -a 【查看当前目录下的所有文件包括隐藏文件】 cat 【查看文本内容】 cat -n 【查看文本内容显示行号】 . 【当前目录】 .. 【上一级目录】 复制代码 其他命令 复制代码 绝对路径:只要从根目录开始的路径写法,都是绝对路径 ls /opt 相对路径:只要不是根目录开头,那就是个相对路径 ls ../tmp ~ 【当前登录用户的家目录 】 - 【返回上一次的工作目录】 cd- man 【查看帮助信息 man 命令 Q退出帮助 man mkdir】 clear 【清空当前屏幕信息】 pwd 【当前所在目录】 whoami 【查看当前登录的用户】 who 【查看所有登陆用户】 cal 【查看日历】 date 【查看当前时间】 useradd 【创建用户】 password 【设置密码】 su - 用户名 【切换用户】 sudo su - 【切换到超级用户】 help 【查看帮助信息】useradd --help 【查看useradd的帮助信息】 echo 【相当于打印,输出到屏幕上】 > 【覆盖写】 echo "hello">text.txt >> 【追加写】 echo "word">>text.txt << 【数据追加写入符】 < 【数据写入】 复制代码 1 2 3 4 5 6 7 cat >file2 <<EOF > 555 > 666 > 777 > EOF # EOF 文件的头尾符号 开始和结束 vim 1 2 3 4 5 6 7 8 9 10 1、打开文件 【vim 文件名】 2、进入编辑模式 【按i进入插入模式】 3、写代码 4、退出编辑模式 【esc退出编辑模式】 5、退出vim编辑器【:wq!】 输入冒号进入底线编辑模式 :w! 强制写入不退出 :q! 不保存强制退出 编码问题:linux系统内置的是py2,如果我们需要写入中文,需要在文件开头定义#!coding:utf8 复制代码 vim编辑器 命令行模式: 1:a/i/o 进入插入模式; 2:dd 删除光标所在的那一行; 3:ndd n为数字,删除光标所在的向下n行 20dd表示删除20行; 4:yy 复制光标所在的那一行; 5:nyy n为数字,复制光标所在的向下n行 20yy表示复制20行; 6:u 复原前一个操作; 7:ctrl + r 重做上一次操作; 8:yy -> 1000p 复制10000行; 9:dd -> p 剪切操作; 10:p 将已复制数据粘贴到光标的下一行; 11:P 将已复制数据粘贴到光标的上一行; 12:shift + $ 跳到行尾 ,0跳到行首; 13:gg 跳到文件的开头,G跳到文件的结尾,nG n为数字,跳到光标所在的向下n行 20nG表示跳到20行; 14:H 跳到屏幕的最上方那一行的第一个字符,M跳到屏幕中央那一行的第一个字符,L跳到屏幕最下方那一行的第一个字符; 扩展模式: 1:set nu 显示行号; 2::w 将文件存入/写入磁盘; 3::q 退出磁盘(不保存); 4::wq 将文件写入保存并退出; 5::wq!将文件写入保存强制并退出; 复制代码
虚拟环境之virtualenvwrapper
步骤1:安装virtualenvwrapper
pip3 install virtualenvwrapper
步骤2:设置Linux的环境变量,每次启动就加载virtualenvwrapper
把下面两行代码添加到 ~/.bashrc文件中 打开文件 vim ~/.bashrc 写入以下两行代码 export WORKON_HOME=~/Envs #设置virtualenv的统一管理目录 export VIRTUALENVWRAPPER_VIRTUALENV_ARGS='--no-site-packages' #添加virtualenvwrapper的参数,生成干净隔绝的环境 export VIRTUALENVWRAPPER_PYTHON=/opt/python347/bin/python3 #指定python解释器 使用which python3查找
export VIRTUALENVWRAPPER_VIRTUALENV=/usr/local/python3/bin/virtualenv
source /opt/python34/bin/virtualenvwrapper.sh #执行virtualenvwrapper安装脚本 读取文件,使得生效,此时已经可以使用virtalenvwrapper source ~/.bashrc
步骤3:基本使用virtualenvwrapper
创建一个虚拟环境: $ mkvirtualenv my_django115 这会在 ~/Envs 中创建 my_django115 文件夹。 在虚拟环境上工作:激活虚拟环境my_django115 $ workon my_django115 再创建一个新的虚拟环境 $ mkvirtualenv my_django2 virtualenvwrapper 提供环境名字的tab补全功能。 当有很多环境, 并且很难记住它们的名字时,这就显得很有用。 workon还可以任意停止你当前的环境,可以在多个虚拟环境中来回切换 workon django1.15 workon django2.0 也可以手动停止虚拟环境 deactivate 删除虚拟环境,需要先退出虚拟环境 rmvirtualenv my_django115
步骤四:常用其他命令
lsvirtualenv 列举所有的环境。 cdvirtualenv 导航到当前激活的虚拟环境的目录中,比如说这样您就能够浏览它的 site-packages 。 cdsitepackages 和上面的类似,但是是直接进入到 site-packages 目录中。 lssitepackages 显示 site-packages 目录中的内容。
完整官网介绍:https://virtualenvwrapper.readthedocs.io/en/latest/command_ref.html
第一步:添加 MariaDB yum 仓库
1、首先在 RHEL/CentOS 和 Fedora 操作系统中添加 MariaDB 的 YUM 配置文件 MariaDB.repo 文件。
#编辑创建mariadb.repo仓库文件 vi /etc/yum.repos.d/MariaDB.repo
2、添加repo仓库配置 [mariadb] name = MariaDB baseurl = http://yum.mariadb.org/10.1/centos7-amd64 gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB gpgcheck=1
第二步:在 CentOS 7 中安装 MariaDB
2、当 MariaDB 仓库地址添加好后,你可以通过下面的一行命令轻松安装 MariaDB。
yum install MariaDB-server MariaDB-client -y
第三不,启动mariadb相关命令
mariadb数据库的相关命令是: systemctl start mariadb #启动MariaDB systemctl stop mariadb #停止MariaDB systemctl restart mariadb #重启MariaDB systemctl enable mariadb #设置开机启动
启动后正常使用mysql
systemctl start mariadb
初始化mysql
在确认 MariaDB 数据库软件程序安装完毕并成功启动后请不要立即使用。为了确保数据 库的安全性和正常运转,需要先对数据库程序进行初始化操作。这个初始化操作涉及下面 5 个 步骤。 ➢ 设置 root 管理员在数据库中的密码值(注意,该密码并非 root 管理员在系统中的密 码,这里的密码值默认应该为空,可直接按回车键)。 ➢ 设置 root 管理员在数据库中的专有密码。 ➢ 随后删除匿名账户,并使用 root 管理员从远程登录数据库,以确保数据库上运行的业 务的安全性。 ➢ 删除默认的测试数据库,取消测试数据库的一系列访问权限。 ➢ 刷新授权列表,让初始化的设定立即生效。
确保mariadb服务器启动后,执行命令初始化
mysql_secure_installation
初始化mysql






mysql基本命令
#修改mysql密码
MariaDB [(none)]> set password = PASSWORD('redhat123');
生产环境里不会死磕root用户,为了数据库的安全以及和其他用户协同管理数据库,就需要创建其他数据库账户,然后分配权限,满足工作需求。
MariaDB [(none)]> create user yuchao@'127.0.0.1' identified by 'redhat123'; MariaDB [(none)]> use mysql; MariaDB [mysql]> select host,user,password from user where user='yuchao';
切换普通用户yuchao,查看数据库信息,发现无法看到完整的数据库列表
[root@master ~]# mysql -uyuchao -p -h 127.0.0.1 MariaDB [(none)]> show databases;
数据库权限设置
mysql使用grant命令对账户进行授权,grant命令常见格式如下
grant 权限 on 数据库.表名 to 账户@主机名 对特定数据库中的特定表授权 grant 权限 on 数据库.* to 账户@主机名 对特定数据库中的所有表给与授权 grant 权限1,权限2,权限3 on *.* to 账户@主机名 对所有库中的所有表给与多个授权 grant all privileges on *.* to 账户@主机名 对所有库和所有表授权所有权限
退出数据库,使用root登录,开始权限设置
[root@master ~]# mysql -uroot -p MariaDB [(none)]> use mysql; MariaDB [(none)]> grant all privileges on *.* to yuchao@127.0.0.1; MariaDB [mysql]> show grants for yuchao@127.0.0.1;
移除权限
MariaDB [(none)]> revoke all privileges on *.* from yuchao@127.0.0.1;
配置mysql
1.中文编码设置,编辑mysql配置文件/etc/my.cnf,下入以下内容
[mysqld] character-set-server=utf8 collation-server=utf8_general_ci log-error=/var/log/mysqld.log [client] default-character-set=utf8 [mysql] default-character-set=utf8
2.授权配置
远程连接设置哦设置所有库,所有表的所有权限,赋值权限给所有ip地址的root用户
mysql > grant all privileges on *.* to root@'%' identified by 'password';
#创建用户
mysql > create user 'username'@'%' identified by 'password';
#刷新权限
flush privileges;
数据库备份与恢复
mysqldump命令用于备份数据库数据
[root@master ~]# mysqldump -u root -p --all-databases > /tmp/db.dump
2.导出db1、db2两个数据库的所有数据
mysqldump -uroot -proot --databases db1 db2 >/tmp/user.sql
进入mariadb数据库,删除一个db
[root@master ~]# mysql -uroot -p MariaDB [(none)]> drop database s11;
进行数据恢复,吧刚才重定向备份的数据库文件导入到mysql中
[root@master ~]# mysql -uroot -p < /tmp/db.dump
MYSQL主从复制
MySQL数据库的主从复制方案,是其自带的功能,并且主从复制并不是复制磁盘上的数据库文件,而是通过binlog日志复制到需要同步的从服务器上。
MySQL数据库支持单向、双向、链式级联,等不同业务场景的复制。在复制的过程中,一台服务器充当主服务器(Master),接收来自用户的内容更新,而一个或多个其他的服务器充当从服务器(slave),接收来自Master上binlog文件的日志内容,解析出SQL,重新更新到Slave,使得主从服务器数据达到一致。
主从复制的逻辑有以下几种
一主一从,单向主从同步模式,只能在Master端写入数据
一主多从

双主主复制逻辑架构,此架构可以在Master1或Master2进行数据写入,或者两端同事写入(特殊设置)

在生产环境中,MySQL主从复制都是异步的复制方式,即不是严格的实时复制,但是给用户的体验都是实时的。
MySQL主从复制集群功能使得MySQL数据库支持大规模高并发读写成为可能,且有效的保护了服务器宕机的数据备份。
应用场景
利用复制功能当Master服务器出现问题时,我们可以人工的切换到从服务器继续提供服务,此时服务器的数据和宕机时的数据几乎完全一致。
复制功能也可用作数据备份,但是如果人为的执行drop,delete等语句删除,那么从库的备份功能也就失效了.
主从机制实现原理

(1) master将改变记录到二进制日志(binary log)中(这些记录叫做二进制日志事件,binary log events); (2) slave将master的binary log events拷贝到它的中继日志(relay log); (3) slave重做中继日志中的事件,将改变反映它自己的数据。
master主库配置
#查看数据库状态
systemctl status mariadb
#停mariadb
systemctl stop mariadb
#修改配置文件
vim /etc/my.cnf
#修改内容
#解释:server-id服务的唯一标识(主从之间都必须不同);log-bin启动二进制日志名称为mysql-bin
[mysqld]
server-id=1
log-bin=mysql-bin
#重启mariadb
systemctl start mariadb
master主库添加从库账号
1.新建用于主从同步的用户chaoge,允许登录的从库是'192.168.178.130' create user 'chaoge'@'192.168.178.130' identified by 'redhat'; 2.#题外话:如果提示密码太简单不复合策略加在前面加这句 mysql> set global validate_password_policy=0; 3.给从库账号授权,说明给chaoge从库复制的权限,在192.168.178.130机器上复制
grant replication slave on *.* to 'chaoge'@'192.168.178.130';
#检查主库创建的复制账号
select user,host from mysql.user;
#检查授权账号的权限
show grants for chaoge@'192.168.178.130';
实现对主数据库锁表只读,防止数据写入,数据复制失败
flush table with read lock;
4.检查主库的状态
MariaDB [(none)]> show master status
-> ;
+------------------+----------+--------------+------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+----------+--------------+------------------+
| mysql-bin.000001 | 575 | | |
+------------------+----------+--------------+------------------+
1 row in set (0.00 sec)
File是二进制日志文件名,Position 是日志开始的位置。后面从库会用到 后面从库会用到 后面从库会用到!!!!!!
5.锁表后,一定要单独再打开一个SSH窗口,导出数据库的所有数据,
[root@oldboy_python ~ 19:32:45]#mysqldump -uroot -p --all-databases > /data/all.sql
6.确保数据导出后,没有数据插入,完毕再查看主库状态
show master status;
7.导出数据完毕后,解锁主库,恢复可写;
unlock tables;
8.将备份导出的数据scp至Slave数据库
scp /data/all.sql root@192.168.178.130:/data/
slave从库配置
1.设置server-id值并关闭binlog功能参数
数据库的server-id在主从复制体系内是唯一的,Slave的server-id要与主库和其他从库不同,并且注释掉Slave的binlog参数。
2.因此修改Slave的/etc/my.cnf,写入
[mysqld]
server-id=3
3.重启数据库
systemctl restart mariadb
4.检查Slava从数据库的各项参数
show variables like 'log_bin';
show variables like 'server_id';
5.恢复主库Master的数据导入到Slave库
导入数据(注意sql文件的路径)
mysql>source /data/all.sql;
方法二:
#mysql -uroot -p < abc.sql
6.配置复制的参数,Slave从库连接Master主库的配置
mysql > change master to master_host='192.168.178.129',
master_user='chaoge',
master_password='redhat',
master_log_file='mysql-bin.000001',
master_log_pos=575;
7.启动从库的同步开关,测试主从复制的情况
start slave;
8.查看复制状态
show slave status\G;
检查主从复制是否成功的关键在于
MariaDB [(none)]> show slave status\G
*************************** 1. row ***************************
Slave_IO_State: Waiting for master to send event
Master_Host: 192.168.119.10
Master_User: chaoge
Master_Port: 3306
Connect_Retry: 60
Master_Log_File: mysql-bin.000001
Read_Master_Log_Pos: 1039
Relay_Log_File: slave-relay-bin.000002
Relay_Log_Pos: 537
Relay_Master_Log_File: mysql-bin.000001
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
tip:
注意此处还未配置从库的只读模式,只需在slave服务器上配置/etc/my.cnf,加上以下配置,并且在slave上创建普通用户,使用普通用户主从同步即可达到只读的效果
如果用root用户,无法达到readonly,这是一个坑
[mysqld] character-set-server=utf8 collation-server=utf8_general_ci log-error=/var/log/mysqld.log server-id=3 read-only=true [client] default-character-set=utf8 [mysql] default-character-set=utf8
CentOS7中使用yum安装Nginx的方法
1、添加源 默认情况Centos7中无Nginx的源,最近发现Nginx官网提供了Centos的源地址。因此可以如下执行命令添加源: sudo rpm -Uvh http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm 2、安装Nginx 通过yum search nginx看看是否已经添加源成功。如果成功则执行下列命令安装Nginx。 sudo yum install -y nginx 3、启动Nginx并设置开机自动运行 sudo systemctl start nginx.service sudo systemctl enable nginx.service
ok

浙公网安备 33010602011771号