The value of an auto increment column is set back to zero when you are having an empty table and restarting the MySQL DBMS.
We run into this issue by using the auto increment value as a history id into a second table.
How can you work around this issue?
The easiest way is to order by id descending on the second table or to setup a "start up" shell script that calculates and sets the auto increment value.
So the setup is the following, debian squeeze and percona version 5.5.35-33.0.
I had done an upgrade from 5.5.35-33.0 to 5.5.36-34.2-648.squeeze and the following error created an red monitor on my jenkins.
ERROR 1148 (42000) at line 1: The used command is not allowed with this MySQL version
After searching on the web, i found this entry on the web.
sudo vim /etc/mysql/my.cnf
# add follwing entry to fitting locations
# /etc/init.d/mysql restart
Get your current used version?
# mysql --user=root --password=
SHOW VARIABLES LIKE "%version%";
Check if changes are working?
# mysql --user=root --password=
SHOW VARIABLES LIKE '%local%';
continuous delivery (each commit moves system into stable and releaseable version)
development and operation is merged together to create a infinie loop of release and feedback (both directions)
share knowledge and experience
Define clearly what is a release (new feature, bugfix, and so one).
Again DevOps is not a new layer between the two areas.
Responsibilites is still clear to reproduce scenarios (automate as much).
It is about people, not about tools. Implement culture of communication.
Try to find conceptual deficits (also software design problems) as early as possible.
Add a version number to your database layout (most likly same release number than code) - flyway, liquibase, self-made
The Area Matrix
area 1 - extend development to operations
use tools like puppet/chef/cfengine to provision environments from versioned code
fast feedback through automations
reuse of code and tools
reliability of delivery process and provisioning
area 2 - extend operations to development
provide monitoring and log files to development (or automated database snapshots to reproduce bug on development machine)
share information about state in production
enable development to improve
enable development to trace production incidents
area 3 - embed development into operations (end user experience is goal to reach)
set stability and capacity as development goals
align goals, share incentives
area 4 - embed operations into development
operations gives feedback about the design of the application that is under development, early and often
avoid not releaseable design
Recipes And Pitfalls
automate to ensure repeatability and foster collaboration (build once on a build server and release)
consider kanban (scrum is more for development but bad for organisation)
consider thorough change and config management - content management
track to ensure traceability (which build/release contains which tickets/bugs - artifactory)
monitor to support accountability (nagios and everything)
dashboard what you are doing (talk to each other what you are doing or what you have done)
use version control to ensure reproducibility (no manual tweaking after checkout)
consider pipelines/process from "put in feature/bugfix to release"
create (executable) documentation to, well, document (try to define goals and what it needs to reach it)
align goals and incentives of devs and ops (small cycle time)
ask and help, open culture of communication
respect your colleagues (stability against features, both leads to great user experience)
Gosh, one of the fastes talks i joined in the past. Nevertheless, the talk was full of informations. Mr. Widenius is an incredible likeable person since you feel the force he is up to presenting open source as a workable business concept.
Based on the speed of the slide switches and the enormous number of slides, there are a lot of gabs in my blog entry (aka talk record).