【美高梅手机版4858】change给大表在线加字段的时候变成从库数据错失的难点,SVN配置Walle自动化布置系统详解

By admin in 美高梅手机版4858 on 2019年8月3日

CentOS
7.2下Nginx+MySQL+PHP-FPM+SVN配置Walle自动化铺排系统详解

明日同事在主库在给一个大表的字段新加了三个目录,因为是大表,所以用了pt-osc工具,在累加完索引没过多长期,开垦那边反应丢数据了。

前些天同事在主库在给二个大表的字段新加了二个索引,因为是大表,所以用了pt-osc工具,在抬高完索引没过多久,开采那边反应丢数据了。

一.SVN下载与安装
   
SVN属于集美式版本调控系统,需求采纳服务器存款和储蓄版本系统、达成协会同盟。

美高梅手机版4858 1

 
这几个表以前是写在主库的,后来不理解是怎么样原因改成了写从库,也正是说主库有一点在此以前的野史数据,然则新的数目都以写在从库上,同事用pt-osc加索引的时候是在主库加的,于是把主库的历史数据同步过来了,从库上的新数据丢了。

 
那些表在此从前是写在主库的,后来不知晓是何等原因改成了写从库,相当于说主库有局地从前的野史数据,可是新的多寡都以写在从库上,同事用pt-osc加索引的时候是在主库加的,于是把主库的野史数据同步过来了,从库上的新数据丢了。

    Subversion下载地址
   
    Windows平台下也能够选拔visualsvn,下载地址
   
    图形分界面tortoisesvn下载地址
   
    eclipse的支持插件下载地址
   

操作系统:CentOS 7.2 x86_64

  通过以下例子也以观看为啥会时有爆发这种场馆:

  通过以下例子也以观看为啥会发出这种情况:

    安装(Windows)
    在Windows平台安装SVN,直接施行安装文件Setup-Subversion-1.8.10.msi.
    能够运营命令svn看是或不是安装成功.
   
然后再设置tortoisesvn,直接实践安装文件TortoiseSVN-1.8.8.25755-x64-svn-1.8.10.msi
   
安装好后方可行任务令行操作版本库,也足以行使TortoiseSVN图形分界面操作版本库.

设置walle系统服务端

 

 

二.劳动器端操作
1.创设版本库
    $ svnadmin create svnrepo
    将会成立D:\svnrepo的目录并发轫化文件夹,里面包车型大巴公文就是版本库的文件.

1.以下安装,均在宿主机(一台配置了LAMP/LNMP的linux机器)上操作

>select count(*) from goods;

>select count(*) from goods;

2.改动权限配置   
    修改版本库的铺排文件svnserve.conf,展开password-db = passwd
    svnrepo\conf\svnserve.conf
    #password-db = passwd

设置lnmp情形,提出选择centos7 yum安装,因为centos7
yum源默许帮助Php5.4以上版本,制止walle系统不相配
yum install -y mariadb mariadb-server nginx php php-bcmath php-fpm
php-gd* php-json freetype freetype-devel php-mbstring php-mcrypt
php-mysql php-opcache php-pdo php-pdo_dblib php-pgsql php-recode
php-snmp php-soap php-xml php-pecl-zip mhash libmcrypt libmcrypt-devel

+———-+

+———-+

    修改配置文件passwd,加多用户和密码
    svnrepo\conf\passwd
    [users]
    gym=******

2.创设walle的web目录,笔者把web根目录配置成/data/www/walle-web(供给配置nginx指向,前边会详述)
mkdir -p /data/www/walle-web && cd /data/www/walle-web  # 新建目录
下载walle-web-master.zip并解压(下载地址:)
unzip walle-web-master.zip
cd walle-web-master

| count(*) |

| count(*) |

3.运作服务器
    启动svn服务
    $ svnserve -d -r d:\svnrepo
    运行服务器后,能够经过以下U福睿斯L访问服务器的版本库:
    svn://localhost
   
可以在explorer中右键弹出式菜单运转tortoisesvn图形分界面工具查看服务器的本子库TortoiseSVN/Repo-Browser.

3.装置mariadb数据库(mysql的操作一样),只须要创制数据库,建表的操作交给walle的setup.php安装程序

+———-+

+———-+

三.客户端操作
1.签出(checkout)
    从版本库签出工作别本
    $ svn checkout svn://localhost d:\testsvn –username=gym
–password=******
    $ cd testsvn
    $ svn info

MariaDB [(none)]> create database walle charset=utf8mb4 collate
utf8mb4_unicode_ci;
MariaDB [(none)]> grant all privileges on walle.* to
‘walleuser’@’%’ identified by ‘wallepass’;

|  1426200 |

|  1426200 |

2.添Gavin件进版本库管理(add)
    增加新的项目文件
    $ svn mkdir project1
    A    project1
    $ svn status
    A    project1

修改walle的web连接
vim /data/www/walle-web/walle-web-master/config/local.php +14
‘db’ => [
    ‘dsn’      => ‘mysql:host=127.0.0.1;dbname=walle’, #
新建数据库walle
    ‘username’  => ‘username’,                          #
连接的用户名
    ‘password’  => ‘password’,                          #
连接的密码
],

+———-+

+———-+

   
遵照预订,创设四个目录trunk、branches、tags,分别是中心、分支、标签.
    $ cd project1
    $ svn mkdir trunk
    $ svn mkdir branches
    $ svn mkdir tags

4.设置composer,假设已设置跳过
curl -sS | php
【美高梅手机版4858】change给大表在线加字段的时候变成从库数据错失的难点,SVN配置Walle自动化布置系统详解。mv composer.phar /usr/local/bin/composer # PATH目录

 

 

    在trunk下树立文件test1.txt
    $ cd trunk
    $ svn add .\*

5.安装vendor
cd /data/www/walle-web/walle-web-master
composer install –prefer-dist –no-dev –optimize-autoloader -vvvv
设置速度慢或失利,可平素下载vendor解压到项目根目录(即/data/www/walle-web/walle-web-master目录下)

CREATE TABLE `goods` (

CREATE TABLE `goods` (

3.交由改动(commit)
    提交改造,把专门的学业别本的修改提交到版本库
    $ svn commit -m “add project project1” –username=gym
–password=******

6.开首化项目
cd /data/www/walle-web/walle-web-master
./yii walle/setup # 须要输入yes

  `rec_id` mediumint(8) unsigned NOT NULL AUTO_INCREMENT,

  `rec_id` mediumint(8) unsigned NOT NULL AUTO_INCREMENT,

    能够查看日志
    $ svn log


  `user_id` mediumint(8) unsigned NOT NULL DEFAULT ‘0’,

  `user_id` mediumint(8) unsigned NOT NULL DEFAULT ‘0’,

4.更新(update)
    将版本库的修改合併到工作别本中.
    $ svn update

create dir 创制目录…
mkdiring dir: /tmp/walle/
mkdiring dir:
/data/www/walle-web/walle-web-master/runtime/ansible_hosts/
mkdiring dir:
/data/www/walle-web/walle-web-master/vendor/bower/jquery/dist
set writable 设置可写权限…
Setting writable: /data/www/walle-web/walle-web-master/runtime
Setting writable: /data/www/walle-web/walle-web-master/web/assets
Setting writable: /tmp/walle/
Setting writable:
/data/www/walle-web/walle-web-master/runtime/ansible_hosts/
set executable 设置可实践权限…
Setting executable: /data/www/walle-web/walle-web-master/yii
update database 更新数据库: yii migrate/up …
Yii Migration Tool (based on Yii v2.0.7-dev)

  `goods_id` mediumint(8) unsigned NOT NULL DEFAULT ‘0’,

  `goods_id` mediumint(8) unsigned NOT NULL DEFAULT ‘0’,

    查看差距
    $ svn diff

Creating migration history table “migration”…Done.
Total 17 new migrations to be applied:
m140328_144900_init
m150926_151034_init_user
m150927_061454_alter_conf_to_mysql
m150929_004629_change_record_action
m150929_034627_session_to_mysql
m150929_115951_project_user_group
m151005_001053_alter_conf_2_project
m151010_050344_group_user_admin
m151011_054352_task_need_more_long
m151012_135612_task_add_branch
m151014_115546_add_pre_release_task
m151018_032238_support_svn
m151027_063246_keep_version_num
m160307_082032_ansible
m160402_173643_add_post_release_delay
m160418_035413_user_status_migrate
m160420_015223_add_file_transmission_mode

  `add_time` int(11) unsigned NOT NULL DEFAULT ‘0’,

  `add_time` int(11) unsigned NOT NULL DEFAULT ‘0’,

5.恢复(revert)
    在未提交前,借使指望收回修改,复苏到上次交给的状态.
    恢复生机单个文件
    $ svn revert test1.txt
    复苏整个分支
    $ svn revert -R trunk

Apply the above migrations? (yes|no) [no]:yes
*** applying m140328_144900_init
    > create table user … done (time: 0.047s)
    > create table conf … done (time: 0.042s)
    > create table task … done (time: 0.016s)
    > create table record … done (time: 0.018s)
*** applied m140328_144900_init (time: 0.134s)

  `is_attention` tinyint(1) NOT NULL DEFAULT ‘0’,

  `is_attention` tinyint(1) NOT NULL DEFAULT ‘0’,

6.分段处理(copy,merge)
    创制分支
    $ cd testsvn\project1
    $ svn copy trunk branches\mybranch
    $ svn commit -m “add branches”

*** applying m150926_151034_init_user
    > insert into {{%user}} … done (time: 0.006s)
    > insert into {{%user}} … done (time: 0.002s)
*** applied m150926_151034_init_user (time: 0.088s)

  `wid` tinyint(3) unsigned NOT NULL DEFAULT ‘1’ COMMENT
‘仓id,默以为1代表中华夏族民共和国仓’,

  `wid` tinyint(3) unsigned NOT NULL DEFAULT ‘1’ COMMENT
‘仓id,默感到1象征中夏族民共和国仓’,

    在分支branches\mybranch下创制文件test2.txt
    $ svn add branches\mybranch\test2.txt
    $ svn commit -m “add test2.txt”

*** applying m150927_061454_alter_conf_to_mysql
    > drop column conf from table conf … done (time: 0.050s)
    > add column git_url string(200) DEFAULT “” COMMENT “git地址” to
table conf … done (time: 0.016s)
    > add column deploy_from string(200) NOT NULL COMMENT
“宿主机贮存clone出来的文件” to table conf … done (time: 0.017s)
    > add column excludes string(500) DEFAULT “” COMMENT
“要扫除的文件” to table conf … done (time: 0.027s)
    > add column release_user string(50) NOT NULL COMMENT
“指标机器用户” to table conf … done (time: 0.059s)
    > add column release_to string(200) NOT NULL COMMENT
“目的机器的目录,也便是nginx的root,可直接web访问” to table conf …
done (time: 0.010s)
    > add column release_library string(200) NOT NULL COMMENT
“目的机器版本发表库” to table conf … done (time: 0.018s)
    > add column hosts string(500) NOT NULL COMMENT “指标机器列表” to
table conf … done (time: 0.016s)
    > add column pre_deploy string(500) DEFAULT “” COMMENT
“布署后置任务” to table conf … done (time: 0.025s)
    > add column post_deploy string(500) DEFAULT “” COMMENT
“同步在此以前义务” to table conf … done (time: 0.023s)
    > add column post_release string(500) DEFAULT “” COMMENT
“同步之后职务” to table conf … done (time: 0.020s)
    > add column git_type string(50) DEFAULT “branch” COMMENT
“三种上线形式,分支、tag” to table conf … done (time: 0.034s)
    > add column audit smallint(1) DEFAULT 0 COMMENT
“是不是需求审批任务0无需,1亟需” to table conf … done (time: 0.025s)
    > drop column created_at from table conf … done (time:
0.012s)
    > add column created_at datetime COMMENT “成立时间” after audit
to table conf … done (time: 0.022s)
    > add column updated_at datetime COMMENT “修改时间” to table
conf … done (time: 0.014s)
    > drop column created_at from table task … done (time:
0.021s)
    > add column created_at datetime COMMENT “创制时间” to table
task … done (time: 0.011s)
    > add column updated_at datetime COMMENT “修改时间” to table
task … done (time: 0.055s)
*** applied m150927_061454_alter_conf_to_mysql (time: 0.495s)

  PRIMARY KEY (`rec_id`),

  PRIMARY KEY (`rec_id`),

    合併分支
    $ cd trunk
    $ svn update
    $ svn merge -r 27:HEAD ..\branches\mybranch

*** applying m150929_004629_change_record_action
    > alter column action in table record to integer(3) unsigned
DEFAULT 10 COMMENT “职务奉行到的阶段” … done (time: 0.021s)
*** applied m150929_004629_change_record_action (time: 0.027s)

  KEY `user_id` (`user_id`),

  KEY `user_id` (`user_id`),

    消除争执后通报
    纵然在update或merge时有争辨,解决争辩后通报SVN.   
    $ svn resolve –accept=working text1.txt

*** applying m150929_034627_session_to_mysql
    > create table session … done (time: 0.005s)
*** applied m150929_034627_session_to_mysql (time: 0.012s)

  KEY `goods_id` (`goods_id`),

  KEY `goods_id` (`goods_id`),

7.标签(tag)
    对里程碑式改变或版本公布营造标签.
    $ svn copy –revision=28 trunk\ tags\project_1.0
    $ svn commit -m “create tag project_1.0”

*** applying m150929_115951_project_user_group
    > create table group … done (time: 0.004s)
    > add column avatar string(100) DEFAULT “default.jpg” COMMENT
“头像图片地址” AFTE途乐 email to table {{%user}} … done (time: 0.014s)
*** applied m150929_115951_project_user_group (time: 0.023s)

  KEY `is_attention` (`is_attention`)

  KEY `is_attention` (`is_attention`)

四.在eclipse使用SVN
    须求在eclipse设置SVN援助插件Subclipse.
    点eclipse菜单: Help/Install New Software…
    填入U中华VL地址,自动下载插件
    URL:
    或然点Add,使用已下载的Subclipse插件site-1.10.5.zip

*** applying m151005_001053_alter_conf_2_project
    > rename table conf to project … done (time: 0.004s)
*** applied m151005_001053_alter_conf_2_project (time: 0.011s)

) ENGINE=InnoDB AUTO_INCREMENT=1721748 DEFAULT CHARSET=utf8  

) ENGINE=InnoDB AUTO_INCREMENT=1721748 DEFAULT CHARSET=utf8  

    使用SVN:
    在eclipse项目中右键弹出美食指南中Team/Share Project…

*** applying m151010_050344_group_user_admin
    > add column type smallint(1) DEFAULT 0 COMMENT
“用户在项目中的关系项目 0普通用户, 1管理员” to table group … done
(time: 0.032s)
    > alter column user_id in table group to integer(32) NOT NULL
COMMENT “用户id” … done (time: 0.013s)
*** applied m151010_050344_group_user_admin (time: 0.051s)

 

 

————————————–分割线

Linux中Subversion配置实例
http://www.linuxidc.com/Linux/2012-02/53109.htm

CentOS 6.2 SVN搭建
(YUM安装)

http://www.linuxidc.com/Linux/2013-10/91903.htm

CentOS 6.5部署Apache+SVN 
http://www.linuxidc.com/Linux/2013-12/94315.htm

Apache+SVN搭建SVN服务器
http://www.linuxidc.com/Linux/2013-03/81379.htm

Windows下SVN服务器搭建和选用 + 客户端重新安装密码
http://www.linuxidc.com/Linux/2013-05/85189p5.htm

Ubuntu Server 12.04 安装
SVN 并迁移 Virtual SVN数据
http://www.linuxidc.com/Linux/2013-05/84695.htm

Ubuntu Server搭建svn服务以及搬迁方法
http://www.linuxidc.com/Linux/2013-05/84693.htm

凭借网盘搭建SVN服务器
http://www.linuxidc.com/Linux/2013-10/91271.htm

*** applying m151011_054352_task_need_more_long
    > alter column excludes in table project to text COMMENT
“要破除的公文” … done (time: 0.013s)
    > alter column hosts in table project to text COMMENT
“指标机器列表” … done (time: 0.015s)
    > alter column pre_deploy in table project to text COMMENT
“布署前置职务” … done (time: 0.013s)
    > alter column post_deploy in table project to text COMMENT
“同步在此之前任务” … done (time: 0.012s)
    > alter column post_release in table project to text COMMENT
“同步之后职责” … done (time: 0.015s)
*** applied m151011_054352_task_need_more_long (time: 0.073s)

咱俩先把goods表上的user_id索引删除:

笔者们先把goods表上的user_id索引删除:

————————————–分割线

本文永世更新链接地址:http://www.linuxidc.com/Linux/2015-01/111299.htm

美高梅手机版4858 2

*** applying m151012_135612_task_add_branch
    > add column branch string(100) DEFAULT “master” comment
“选拔上线的分段” to table task … done (time: 0.011s)
    > alter column name in table project to string(100) DEFAULT
“master” comment “项目名字” … done (time: 0.009s)
*** applied m151012_135612_task_add_branch (time: 0.026s)

alter table goods drop key user_id;

alter table goods drop key user_id;

*** applying m151014_115546_add_pre_release_task
    > alter column post_release in table project to text COMMENT
“同步此前目的机器施行的职务” … done (time: 0.003s)
    > rename column post_release in table project to pre_release
… done (time: 0.011s)
    > add column post_release text COMMENT
“同步之后目的机器试行的职责” AFTELAND pre_release to table project …
done (time: 0.013s)
*** applied m151014_115546_add_pre_release_task (time: 0.033s)

 

 

*** applying m151018_032238_support_svn
    > rename column git_url in table project to repo_url … done
(time: 0.040s)
    > rename column git_type in table project to repo_mode … done
(time: 0.016s)
    > alter column repo_mode in table project to string(50) DEFAULT
“branch” COMMENT “上线格局:branch/tag” AFTE途胜 repo_url … done (time:
0.015s)
    > add column repo_type string(10) DEFAULT “git” COMMENT
“上线情势:git/svn” AFTE奥迪Q7 repo_mode to table project … done (time:
0.014s)
    > add column repo_username string(50) DEFAULT “” COMMENT
“版本管理连串的用户名,一般为svn的用户名” AFTEEnclave repo_url to table
project … done (time: 0.013s)
    > add column repo_password string(100) DEFAULT “” COMMENT
“版本管理体系的密码,一般为svn的密码” AFTE君越 repo_username to table
project … done (time: 0.037s)
    > add column file_list text COMMENT
“文件列表,svn上线方式大概会生出” to table task … done (time:
0.009s)
    > alter column commit_id in table task to string(100) DEFAULT “”
COMMENT “git commit id” … done (time: 0.010s)
*** applied m151018_032238_support_svn (time: 0.159s)

在主库上删除部分数据:

在主库上剔除部分数据:

*** applying m151027_063246_keep_version_num
    > add column keep_version_num integer(3) NOT NULL DEFAULT 20
COMMENT “线上版本保留数” AFTESportage audit to table project … done (time:
0.012s)
    > add column enable_rollback integer(1) NOT NULL DEFAULT 1
COMMENT “能还是不可能回滚此版本:0no 1yes” to table task … done (time:
0.011s)
*** applied m151027_063246_keep_version_num (time: 0.030s)

>set sql_log_bin=off;

>set sql_log_bin=off;

*** applying m160307_082032_ansible
    > add column ansible smallint(3) NOT NULL DEFAULT 0 COMMENT
“是或不是启用Ansible 0关闭,1敞开” AFTE奥迪Q7 audit to table project … done
(time: 0.038s)
*** applied m160307_082032_ansible (time: 0.059s)

>delete from goods where rec_id>721747;

>delete from goods where rec_id>721747;

*** applying m160402_173643_add_post_release_delay
    > add column post_release_delay integer(11) NOT NULL DEFAULT 0
COMMENT “每台指标机实践post_release职务间隔/延迟时间 单位:秒” AFTE昂Corapost_release to table project … done (time: 0.010s)
*** applied m160402_173643_add_post_release_delay (time: 0.015s)

Query OK, 848254 rows affected (20.24 sec)

Query OK, 848254 rows affected (20.24 sec)

*** applying m160418_035413_user_status_migrate
    > alter column role in table {{%user}} to smallint(6) NOT NULL
DEFAULT 1 … done (time: 0.005s)
    > alter column status in table {{%user}} to smallint(6) NOT NULL
DEFAULT 1 … done (time: 0.003s)
    > update {{%user}} … done (time: 0.006s)
    > update {{%user}} … done (time: 0.002s)
    > update {{%user}} … done (time: 0.002s)
    > update {{%user}} … done (time: 0.003s)
    > update {{%user}} … done (time: 0.001s)
*** applied m160418_035413_user_status_migrate (time: 0.028s)

>set sql_log_bin=on;

>set sql_log_bin=on;

*** applying m160420_015223_add_file_transmission_mode
    > alter column created_at in table task to datetime COMMENT
“制造时间” AFTEPRADO enable_rollback … done (time: 0.016s)
    > alter column updated_at in table task to datetime COMMENT
“修改时间” AFTE安德拉 created_at … done (time: 0.052s)
    > add column file_transmission_mode smallint(3) NOT NULL
DEFAULT 1 COMMENT “上线文件格局: 1.全量具备文件 2.内定文件列表” AFTESportagebranch to table task … done (time: 0.039s)
*** applied m160420_015223_add_file_transmission_mode (time:
0.111s)

>select count(*) from test;

>select count(*) from test;

Migrated up successfully.

7.配置nginx
刷新页面看到50x依旧404均是nginx配置失当,要求查阅nginx日志

nginx轻松布署

server {
    listen      80;
    server_name  192.168.3.13; # 改你的host
    root /data/www/walle-web/walle-web-master/web; # 根目录为web
    index index.php;

    # 提出放内网
    # allow 192.168.0.0/24;
    # deny all;

    location / {
        try_files $uri $uri/ /index.php$is_args$args;
    }

    location ~ \.php$ {
        try_files $uri = 404;
        fastcgi_pass  127.0.0.1:9000;
        fastcgi_param  SCRIPT_FILENAME 
$document_root$fastcgi_script_name;
        include        fastcgi_params;
    }
}
8.拜候地址:

不移至理,也许您安排nginx时的server_name是walle.chinasoft.com时,配置本地hosts之后,直接访谈:walle.chinasoft.com亦可。
管理员默许账户密码都为:
admin

美高梅手机版4858 3

从那之后walle系统的布局告一段落

walle系统的应用:

多少个术语:
宿主机:walle服务安装所在的机械
目的机:代码要分发到的机群
ssh-key信任:可免密码登入,贰个机器的一个用户与三个机械的三个用户通过ssh-key来确立信任(一般为逍客SA)

尝试景况:
宿主机 192.168.3.13(布置了walle系统的服务器)
指标机器 192.168.3.17(须求配备web项目标情形)
svn服务器 192.168.3.18

宿主机walle系统上的操作:

1.安装ansible,要求ansible命令操作远程主机
yum install -y ansible

拉长用户www_php并设置成walle
web端php-fpm的运营用户,该用户重假如宿主机walle用来操作项目布局(代码拉取、项目布局操作等的用户)
useradd www_php
echo ‘www_php’ |passwd –stdin www_php
vim /etc/php-fpm.d/www.conf #配置www_php有运转权限

listen.owner = www_php
listen.group = www_php
user = www_php
group = www_php

美高梅手机版4858 4

修改walle_web目录权限,否则不得写
chown -R www_php.www_php /data/www/walle-web

2.把宿主机的php进度用户的ssh-key增添到gitlab/github(svn不要求充裕,直接利用访谈svn的账号密码就可以walle有实际的布局分界面),全部指标服务器机群,配置就成功了五分之四。

肯定宿主机的php进度用户:
vi php-fpm.conf
user = php-user    # 看下用的是哪些用户

ps aux|grep php-fpm # 也是能够的

  1. 收获宿主机的php进程用户pwww_php的ssh-key并增多到指标主机信任
    su – php-user
    cat ~/.ssh/id_rsa.pub
    php-user设置为no-login?先裁撤no-login,增加完ssh-key认证后再设置为no-login

su – www_php
ssh-keygen
ssh-copy-id -i .ssh/id_rsa.pub release_user@192.168.3.17
增加目的机器的深信
[www_php@localhost ~]$ ssh-copy-id -i .ssh/id_rsa.pub
release_user@192.168.3.17
/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to
filter out any that are already installed
/usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed — if you
are prompted now it is to install the new keys
release_user@192.168.3.17’s password:

Number of key(s) added: 1

Now try logging into the machine, with:  “ssh
‘release_user@192.168.3.17′”
and check to make sure that only the key(s) you wanted were added.

对象主机
chown -R release_user.release_user /data/www
chmod 755 -R /data/www

useradd release_user

echo ‘release_user’ |passwd –stdin release_user

至于walle的失实调节和测量试验:
暗中同意日志打字与印刷在/tmp/walle/目录下,centos7.2不曾这几个日志目录

缘由:centos 7 yum
安装的php-fpm暗中认可/tmp目录不可写:/usr/lib/systemd/system/php-fpm.service
中的 PrivateTmp=true 禁止了向tmp目录写日记

消除办法:
mkdir /tmp/walle
chmod 777 -R /tmp

vim /usr/lib/systemd/system/php-fpm.service

PrivateTmp=false

再也加载配置生效
systemctl daemon-reload
systemctl reload php-fpm

对svn不熟知的爱人可以看下:
有关SVN的trunk、branch、tag相关概念,互连网摘抄的稿子

——不难的对照
  SVN的办事机制在某种程度上就好像一颗正在生长的树:
一颗有树干和广大分段的树
支行从树干生长出来,並且细的道岔从相对极粗的树枝中长出
一棵树能够唯有树干未有分支(不过这种情状不会没完没了相当久,随着树的成材,断定会有分支啦,^^)
一颗未有树干然则有大多拨出的树看起来更疑似地板上的一捆树枝
一旦树枝患病了,最后分支也会蒙受震慑,然后整棵树就能死去
倘使分段患病了,你能够剪掉它,然后另外分支还有也许会生长出来的哦!
倘诺分段生长太快了,对于树干它或然会分外沉重,最后整棵树会垮塌掉
当您认为到您的树、树干也许是分支看起来极漂亮的时候,你可以给它照张相,那样就就能够记念它在当场是何其的赞。
——Trunk
  Trunk是停放稳固代码的基本点条件,仿佛贰个汽车工厂,担负将产品的小车零件组装在一道。
  以下内容将报告您哪些使用SVN trunk:
独有您不能忽视理局地便于且能快捷解决的BUG,恐怕你必须增加一些风马牛不相及逻辑的文书(举例媒体文件:图像,摄像,CSS等等),不然恒久不要在trunk直接做开垦
绝不因为特殊的急需而去对原先的版本做太大的改换,怎样相关的情状都表示须求树立一个branch(如下所述)
毫不提交一些大概破坏trunk的剧情,例如从branch合并
假若你在少数时候不常间破坏了trunk,bring some cake the next day (”with
great responsibilities come… huge cakes”)
——Branches
  三个branch便是从四个SVN仓库中的子树所作的一份普通拷贝。平时状态它的做事看似与UNIX系统上的符号链接,不过你一旦在三个SVN
branch里修改了有的文件,並且那一个被改变的文件从拷贝过来的源文件独立发展,就无法如此感到了。当叁个branch完毕了,并且感到它丰盛牢固的时候,它必须联合回它原先的正片的地点,也正是说:若是原来是从trunk中拷贝的,就应有回到trunk去,也许统二回它原来拷贝的父级branch。
  以下内容将报告您如何采纳SVN branches:
要是您须求修改你的应用程序,可能为它支付二个新的表征,请从trunk中成立一个新的branch,然后依据这些新的道岔进行付出
唯有是因为必须从多少个branch中开创一个新的子branch,不然新的branch必须从trunk成立
当你创建了贰个新branch,你应当及时切换过去。要是你从未如此做,那您干吗要在中期的地方创设这么些分支呢?
——Tags
  从表面上看,SVN branches和SVN
tags未有怎么异样,不过从概念上的话,它们有广大异样。其实七个SVN
tags就是上文所述的“为那棵树照张相”:二个trunk或然一个branch修订版的命名快速照相。
  以下内容将告诉你什么使用SVN tags:
作为八个开拓者,永恒不要切换至、抽出,大概向四个SVN
tag提交任何内容:叁个tag好比某种“照片”,并非的确的东西,tags只可读,不可写。
在特别只怕须要极其注意的碰到中,如:生产条件(production)、?(staging)、测量试验境况(testing)等等,只好从二个修复过的(fixed)tag中checkout和update,长久不要commit至一个tag。
对于上述谈起到的遭遇,可以创制如下的tags:“production”,“staging”,“testing”等等。你也足以依照软件版本、项目标成熟程度来命名tag:“1.0.3”,“stable”,“latest”等等。
当trunk已经平静,並且能够对外发布,也要对应地重复创立tags,然后再立异相关的景况(production,
staging, etc)
——工作流样例
  假诺你必须增加了二个风味至三个品类,且这么些项目是受版本调节的,你基本上须要达成如下几个步骤:
选择SVN checkout也许SVN
switch从这些类型的trunk获得三个新的劳作拷贝(branch)
采取SVN切换至新的branch
成功新特性的开销(当然,要做足够的测验,包罗在始发编码前)
万一那个特点成就同期稳定(已交由),并由此你的同事们肯定,切换至trunk
联合你的支行至你的行事拷贝(trunk),况且解决一多元的争论
再也检查合并后的代码
假定或然的话,麻烦你的同事对您所编写、改换的代码举办三次复查(review)
提啪啪啪併后的职业拷贝至trunk
一经有个别配置必要独特的景况(生成意况等等),请更新相关的tag至你碰巧提交到trunk的订正版本
行使SVN update安顿至相关条件

Ubuntu 14.04
下搭建SVN服务器 SVN:// 
http://www.linuxidc.com/Linux/2015-01/111956.htm

CentOS 6.2 SVN搭建 (YUM安装)
http://www.linuxidc.com/Linux/2013-10/91903.htm

CentOS 6.5部署Apache+SVN 
http://www.linuxidc.com/Linux/2013-12/94315.htm

Apache+SVN搭建SVN服务器
http://www.linuxidc.com/Linux/2013-03/81379.htm

Windows下SVN服务器搭建和使用 + 客户端重新安装密码
http://www.linuxidc.com/Linux/2013-05/85189p5.htm

CentOS 6.6搭建SVN服务器
http://www.linuxidc.com/Linux/2016-12/137864.htm

CentOS 7.2下Nginx+MySQL+PHP-FPM+SVN配置Walle自动化布置系统详解
http://www.linuxidc.com/Linux/2016-11/137703.htm

Subversion (SVN)
的详尽介绍
:请点这里
Subversion (SVN)
的下载地址
:请点这里

正文永恒更新链接地址:http://www.linuxidc.com/Linux/2016-11/137703.htm

美高梅手机版4858 5

+———-+

+———-+

| count(*) |

| count(*) |

+———-+

+———-+

|   577946 |

|   577946 |

+———-+

+———-+

 

 

 

 

测试一:

测试一:

先直接用alter table语句对goods表的user_id字段加索引:

先直接用alter table语句对goods表的user_id字段加索引:

>alter table  test add key (user_id);

>alter table  test add key (user_id);

 

 

主库:

主库:

show create table test\G

show create table test\G

*************************** 1. row
***************************

*************************** 1. row
***************************

       Table: test

       Table: test

Create Table: CREATE TABLE `test` (

Create Table: CREATE TABLE `test` (

  `rec_id` mediumint(8) unsigned NOT NULL AUTO_INCREMENT,

  `rec_id` mediumint(8) unsigned NOT NULL AUTO_INCREMENT,

  `user_id` mediumint(8) unsigned NOT NULL DEFAULT ‘0’,

  `user_id` mediumint(8) unsigned NOT NULL DEFAULT ‘0’,

  `goods_id` mediumint(8) unsigned NOT NULL DEFAULT ‘0’,

  `goods_id` mediumint(8) unsigned NOT NULL DEFAULT ‘0’,

  `add_time` int(11) unsigned NOT NULL DEFAULT ‘0’,

  `add_time` int(11) unsigned NOT NULL DEFAULT ‘0’,

  `is_attention` tinyint(1) NOT NULL DEFAULT ‘0’,

  `is_attention` tinyint(1) NOT NULL DEFAULT ‘0’,

  `wid` tinyint(3) unsigned NOT NULL DEFAULT ‘1’ COMMENT
‘仓id,默认为1意味中华夏族民共和国仓’,

  `wid` tinyint(3) unsigned NOT NULL DEFAULT ‘1’ COMMENT
‘仓id,暗中认可为1意味着中夏族民共和国仓’,

  PRIMARY KEY (`rec_id`),

  PRIMARY KEY (`rec_id`),

  KEY `goods_id` (`goods_id`),

  KEY `goods_id` (`goods_id`),

  KEY `is_attention` (`is_attention`),

  KEY `is_attention` (`is_attention`),

  KEY `user_id` (`user_id`)

  KEY `user_id` (`user_id`)

) ENGINE=InnoDB AUTO_INCREMENT=1721748 DEFAULT CHARSET=utf8

) ENGINE=InnoDB AUTO_INCREMENT=1721748 DEFAULT CHARSET=utf8

1 row in set (0.00 sec)

1 row in set (0.00 sec)

 

 

>select count(*) from test;

>select count(*) from test;

+———-+

+———-+

| count(*) |

| count(*) |

+———-+

+———-+

|   577946 |

|   577946 |

+———-+

+———-+

1 row in set (0.22 sec)

1 row in set (0.22 sec)

 

 

从库:

从库:

show create table test\G

show create table test\G

*************************** 1. row
***************************

*************************** 1. row
***************************

       Table: test

       Table: test

Create Table: CREATE TABLE `test` (

Create Table: CREATE TABLE `test` (

  `rec_id` mediumint(8) unsigned NOT NULL AUTO_INCREMENT,

  `rec_id` mediumint(8) unsigned NOT NULL AUTO_INCREMENT,

  `user_id` mediumint(8) unsigned NOT NULL DEFAULT ‘0’,

  `user_id` mediumint(8) unsigned NOT NULL DEFAULT ‘0’,

  `goods_id` mediumint(8) unsigned NOT NULL DEFAULT ‘0’,

  `goods_id` mediumint(8) unsigned NOT NULL DEFAULT ‘0’,

  `add_time` int(11) unsigned NOT NULL DEFAULT ‘0’,

  `add_time` int(11) unsigned NOT NULL DEFAULT ‘0’,

  `is_attention` tinyint(1) NOT NULL DEFAULT ‘0’,

  `is_attention` tinyint(1) NOT NULL DEFAULT ‘0’,

  `wid` tinyint(3) unsigned NOT NULL DEFAULT ‘1’ COMMENT
‘仓id,默以为1代表中夏族民共和国仓’,

  `wid` tinyint(3) unsigned NOT NULL DEFAULT ‘1’ COMMENT
‘仓id,默感到1表示中夏族民共和国仓’,

  PRIMARY KEY (`rec_id`),

  PRIMARY KEY (`rec_id`),

  KEY `goods_id` (`goods_id`),

  KEY `goods_id` (`goods_id`),

  KEY `is_attention` (`is_attention`),

  KEY `is_attention` (`is_attention`),

  KEY `user_id` (`user_id`)

  KEY `user_id` (`user_id`)

) ENGINE=InnoDB AUTO_INCREMENT=1721748 DEFAULT CHARSET=utf8

) ENGINE=InnoDB AUTO_INCREMENT=1721748 DEFAULT CHARSET=utf8

1 row in set (0.00 sec)

1 row in set (0.00 sec)

 

 

>select count(*) from test;

>select count(*) from test;

+———-+

+———-+

| count(*) |

| count(*) |

+———-+

+———-+

|  1426200 |

|  1426200 |

+———-+

+———-+

1 row in set (0.47 sec)

1 row in set (0.47 sec)

 

 

能够看到一贯用alter table加索引的时候从库的多少未有变化。

能够观望一贯用alter table加索引的时候从库的数目未有成形。

 

 

测试二:

测试二:

用pt-osc事业在主库goods表的user_id列加索引

用pt-osc职业在主库goods表的user_id列加索引

先删除user_id列的目录,在主库上施行:

先删除user_id列的目录,在主库上推行:

alter table  test drop index user_id;

alter table  test drop index user_id;

 

 

pt-osc加索引:

pt-osc加索引:

pt-online-schema-change –nocheck-replication-filters
–recursion-method=none –charset=utf8 –alter “add index (user_id) ”
h=localhost,P=3306,u=root,p=123456,D=test,t=test –print –execute

pt-online-schema-change –nocheck-replication-filters
–recursion-method=none –charset=utf8 –alter “add index (user_id) ”
h=localhost,P=3306,u=root,p=123456,D=test,t=test –print –execute

 

 

Successfully altered `test`.`test`. 提醒索引加成功。

Successfully altered `test`.`test`. 提示索引加成功。

主库:

主库:

>select count(*) from test;

>select count(*) from test;

+———-+

+———-+

| count(*) |

| count(*) |

+———-+

+———-+

|   577946 |

|   577946 |

+———-+

+———-+

从库:

从库:

>select count(*) from test;

>select count(*) from test;

+———-+

+———-+

| count(*) |

| count(*) |

+———-+

+———-+

|   577946 |

|   577946 |

+———-+

+———-+

能够看来,从库的多寡被主库覆盖。

能够观望,从库的数量被主库覆盖。

 

 

干什么会并发那些缘故吧,大家能够切切实实看一下加索引的长河:

缘何会出现这些原因吗,大家能够切实看一下加索引的历程:

# pt-online-schema-change –nocheck-replication-filters
–recursion-method=none –charset=utf8 –alter “add index (user_id) ”
h=localhost,P=3306,u=root,p=123456,D=test,t=test –print –execute

# pt-online-schema-change –nocheck-replication-filters
–recursion-method=none –charset=utf8 –alter “add index (user_id) ”
h=localhost,P=3306,u=root,p=123456,D=test,t=test –print –execute

No slaves found.  See –recursion-method if host master has slaves.

No slaves found.  See –recursion-method if host master has slaves.

Not checking slave lag because no slaves were found and
–check-slave-lag was not specified.

Not checking slave lag because no slaves were found and
–check-slave-lag was not specified.

Operation, tries, wait:

Operation, tries, wait:

  copy_rows, 10, 0.25

  copy_rows, 10, 0.25

  create_triggers, 10, 1

  create_triggers, 10, 1

  drop_triggers, 10, 1

  drop_triggers, 10, 1

  swap_tables, 10, 1

  swap_tables, 10, 1

  update_foreign_keys, 10, 1

  update_foreign_keys, 10, 1

Altering `test`.`test`…

Altering `test`.`test`…

Creating new table…

Creating new table…

CREATE TABLE `test`.`_test_new` (

CREATE TABLE `test`.`_test_new` (

  `rec_id` mediumint(8) unsigned NOT NULL AUTO_INCREMENT,

  `rec_id` mediumint(8) unsigned NOT NULL AUTO_INCREMENT,

  `user_id` mediumint(8) unsigned NOT NULL DEFAULT ‘0’,

  `user_id` mediumint(8) unsigned NOT NULL DEFAULT ‘0’,

  `goods_id` mediumint(8) unsigned NOT NULL DEFAULT ‘0’,

  `goods_id` mediumint(8) unsigned NOT NULL DEFAULT ‘0’,

  `add_time` int(11) unsigned NOT NULL DEFAULT ‘0’,

  `add_time` int(11) unsigned NOT NULL DEFAULT ‘0’,

  `is_attention` tinyint(1) NOT NULL DEFAULT ‘0’,

  `is_attention` tinyint(1) NOT NULL DEFAULT ‘0’,

  `wid` tinyint(3) unsigned NOT NULL DEFAULT ‘1’ COMMENT
‘仓id,默以为1表示中国仓’,

  `wid` tinyint(3) unsigned NOT NULL DEFAULT ‘1’ COMMENT
‘仓id,暗许为1意味中华夏族民共和国仓’,

  PRIMARY KEY (`rec_id`),

  PRIMARY KEY (`rec_id`),

  KEY `goods_id` (`goods_id`),

  KEY `goods_id` (`goods_id`),

  KEY `is_attention` (`is_attention`)

  KEY `is_attention` (`is_attention`)

) ENGINE=InnoDB AUTO_INCREMENT=1721748 DEFAULT CHARSET=utf8

) ENGINE=InnoDB AUTO_INCREMENT=1721748 DEFAULT CHARSET=utf8

Created new table test._test_new OK.

Created new table test._test_new OK.

Altering new table…

Altering new table…

ALTER TABLE `test`.`_test_new` add index (user_id) 

ALTER TABLE `test`.`_test_new` add index (user_id) 

Altered `test`.`_test_new` OK.

Altered `test`.`_test_new` OK.

2016-02-01T18:11:48 Creating triggers…

2016-02-01T18:11:48 Creating triggers…

CREATE TRIGGER `pt_osc_test_test_del` AFTER DELETE ON
`test`.`test` FOR EACH ROW DELETE IGNORE FROM
`test`.`_test_new` WHERE `test`.`_test_new`.`rec_id`
<=> OLD.`rec_id`

CREATE TRIGGER `pt_osc_test_test_del` AFTER DELETE ON
`test`.`test` FOR EACH ROW DELETE IGNORE FROM
`test`.`_test_new` WHERE `test`.`_test_new`.`rec_id`
<=> OLD.`rec_id`

CREATE TRIGGER `pt_osc_test_test_upd` AFTER UPDATE ON
`test`.`test` FOR EACH ROW REPLACE INTO `test`.`_test_new`
(`rec_id`, `user_id`, `goods_id`, `add_time`,
`is_attention`, `wid`) VALUES (NEW.`rec_id`, NEW.`user_id`,
NEW.`goods_id`, NEW.`add_time`, NEW.`is_attention`,
NEW.`wid`)

CREATE TRIGGER `pt_osc_test_test_upd` AFTER UPDATE ON
`test`.`test` FOR EACH ROW REPLACE INTO `test`.`_test_new`
(`rec_id`, `user_id`, `goods_id`, `add_time`,
`is_attention`, `wid`) VALUES (NEW.`rec_id`, NEW.`user_id`,
NEW.`goods_id`, NEW.`add_time`, NEW.`is_attention`,
NEW.`wid`)

CREATE TRIGGER `pt_osc_test_test_ins` AFTER INSERT ON
`test`.`test` FOR EACH ROW REPLACE INTO `test`.`_test_new`
(`rec_id`, `user_id`, `goods_id`, `add_time`,
`is_attention`, `wid`) VALUES (NEW.`rec_id`, NEW.`user_id`,
NEW.`goods_id`, NEW.`add_time`, NEW.`is_attention`,
NEW.`wid`)

CREATE TRIGGER `pt_osc_test_test_ins` AFTER INSERT ON
`test`.`test` FOR EACH ROW REPLACE INTO `test`.`_test_new`
(`rec_id`, `user_id`, `goods_id`, `add_time`,
`is_attention`, `wid`) VALUES (NEW.`rec_id`, NEW.`user_id`,
NEW.`goods_id`, NEW.`add_time`, NEW.`is_attention`,
NEW.`wid`)

2016-02-01T18:11:48 Created triggers OK.

2016-02-01T18:11:48 Created triggers OK.

2016-02-01T18:11:48 Copying approximately 578405 rows…

2016-02-01T18:11:48 Copying approximately 578405 rows…

INSERT LOW_PRIORITY IGNORE INTO `test`.`_test_new` (`rec_id`,
`user_id`, `goods_id`, `add_time`, `is_attention`, `wid`)
SELECT `rec_id`, `user_id`, `goods_id`, `add_time`,
`is_attention`, `wid` FROM `test`.`test` FORCE
INDEX(`PRIMARY`) WHERE ((`rec_id` >= ?)) AND ((`rec_id` <=
?)) LOCK IN SHARE MODE /*pt-online-schema-change 30910 copy nibble*/

INSERT LOW_PRIORITY IGNORE INTO `test`.`_test_new` (`rec_id`,
`user_id`, `goods_id`, `add_time`, `is_attention`, `wid`)
SELECT `rec_id`, `user_id`, `goods_id`, `add_time`,
`is_attention`, `wid` FROM `test`.`test` FORCE
INDEX(`PRIMARY`) WHERE ((`rec_id` >= ?)) AND ((`rec_id` <=
?)) LOCK IN SHARE MODE /*pt-online-schema-change 30910 copy nibble*/

SELECT /*!40001 SQL_NO_CACHE */ `美高梅手机版4858 ,rec_id` FROM `test`.`test`
FORCE INDEX(`PRIMARY`) WHERE ((`rec_id` >= ?)) ORDER BY
`rec_id` LIMIT ?, 2 /*next chunk boundary*/

SELECT /*!40001 SQL_NO_CACHE */ `rec_id` FROM `test`.`test`
FORCE INDEX(`PRIMARY`) WHERE ((`rec_id` >= ?)) ORDER BY
`rec_id` LIMIT ?, 2 /*next chunk boundary*/

2016-02-01T18:12:09 Copied rows OK.

2016-02-01T18:12:09 Copied rows OK.

2016-02-01T18:12:09 Swapping tables…

2016-02-01T18:12:09 Swapping tables…

RENAME TABLE `test`.`test` TO `test`.`_test_old`,
`test`.`_test_new` TO `test`.`test`

RENAME TABLE `test`.`test` TO `test`.`_test_old`,
`test`.`_test_new` TO `test`.`test`

2016-02-01T18:12:09 Swapped original and new tables OK.

2016-02-01T18:12:09 Swapped original and new tables OK.

2016-02-01T18:12:09 Dropping old table…

2016-02-01T18:12:09 Dropping old table…

DROP TABLE IF EXISTS `test`.`_test_old`

DROP TABLE IF EXISTS `test`.`_test_old`

2016-02-01T18:12:09 Dropped old table `test`.`_test_old` OK.

2016-02-01T18:12:09 Dropped old table `test`.`_test_old` OK.

2016-02-01T18:12:09 Dropping triggers…

2016-02-01T18:12:09 Dropping triggers…

DROP TRIGGER IF EXISTS `test`.`pt_osc_test_test_del`;

DROP TRIGGER IF EXISTS `test`.`pt_osc_test_test_del`;

DROP TRIGGER IF EXISTS `test`.`pt_osc_test_test_upd`;

DROP TRIGGER IF EXISTS `test`.`pt_osc_test_test_upd`;

DROP TRIGGER IF EXISTS `test`.`pt_osc_test_test_ins`;

DROP TRIGGER IF EXISTS `test`.`pt_osc_test_test_ins`;

2016-02-01T18:12:09 Dropped triggers OK.

2016-02-01T18:12:09 Dropped triggers OK.

Successfully altered `test`.`test`.

Successfully altered `test`.`test`.

 

 

在建索引的进度中,pt-osc会新将原表的数目拷贝到一张一时表里面,创造四个存款和储蓄进程来一同有转移的数额,先在一时表下面加索引,加完索引后再将临时表rename。

在建索引的历程中,pt-osc会新将原表的数码拷贝到一张一时表里面,创制四个存款和储蓄进程来一起有变动的多少,先在临时表上边加索引,加完索引后再将临时表rename。

 

 

实在只要得以尽大概只写主库不写从库,那样能够制止过多坑。

事实上只要得以尽量只写主库不写从库,那样能够幸免过多坑。

 

 

发表评论

电子邮件地址不会被公开。 必填项已用*标注

网站地图xml地图
Copyright @ 2010-2019 美高梅手机版4858 版权所有