I had canker sores for my entire life, well into my late 20s. I tried everything: changing toothpastes (more on this in a second), changing brushes, using mouthwash, being told my mouth was "dirty" and I need to brush more, etc.
Turns out (at least for me) the sodium lauryl sulfate (SLS) used as a foaming agent in (almost) every single toothpaste causes canker sores. I found "canker sore toothpaste" that lacks the SLS, for $7 a tube. I used it for couple of years and it worked!
If you read up on SLS, this is not super-surprising. It's a known skin irritant, and is known to cause more irritation when left on the skin for more than a couple of minutes. Canker sores are an autoimmune issue, so my theory is the irritation triggers an immune response, leading to the sore.
And then I discovered if I rinse thoroughly (twice) after brushing, even with normal toothpaste, I just don't get canker sores anymore! Not sure if it's universal, but canker sores suck so much, I hope this helps someone suffering like I was.